ios safari浏览器不能保存session的问题,含nginx解决办法

我们的项目是一个单页应用,前端去访问服务器获取JSON数据,然后填充页面进行渲染,在Webkit上运行正常,但在Safari上就出现了问题,在Safari上登录的时候一直提示验证码错误,并且这是一个很麻烦的问题,因为只有将应用部署到远程服务器上才出现这个问题,本地测试是正常的。

经过仔细的排查错误后,检测出是因为我们获取验证码时发起了一次Ajax连接,然后验证码存储在了session里,接着验证时又发起了一次Ajax连接,因为Safari不保存cookie,所以有两个session,这样自然验证码就是错的了。

问题找到了,就开始着手找解决办法,最开始找到了一个,就是设置Safari可以保存cookie,我试了一下后,发现的确可以登录,证明问题找对了,但很明显,这个方法不合适,因为我们不能要求每一个用户都去设置他们的浏览器。于是开始找其他办法,最终在stackoverflow上找到了一个,

将服务器的IP地址改为域名

简单得难以置信,具体地解释可以看这里:http://stackoverflow.com/questions/2138245/session-is-lost-and-created-as-new-in-every-servlet-request

第二种方法是把sessionStorage换成了localStorage, 这下就都可以取到了。

参考:
https://blog.csdn.net/zgljl2012/article/details/50845451
https://blog.csdn.net/qq_43084297/article/details/82756494
https://www.cnblogs.com/pengc/p/8714475.html cookie,session机制

nginx解决办法:参考https://blog.csdn.net/jingogfhvk001/article/details/96305228

url的/问题

在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。

 

下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。

第一种:

location /proxy/ {

     proxy_pass http://127.0.0.1:81/;

}

 

会被代理到http://127.0.0.1:81/test.html 这个url

 

第二咱(相对于第一种,最后少一个 /)

location /proxy/ {

     proxy_pass http://127.0.0.1:81;

}

会被代理到http://127.0.0.1:81/proxy/test.html 这个url

 

第三种:

location /proxy/ {

     proxy_pass http://127.0.0.1:81/ftlynx/;

}

会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。

 

第四种情况(相对于第三种,最后少一个 / ):

location /proxy/ {

     proxy_pass http://127.0.0.1:81/ftlynx;

}

会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url

关于 nginx解析顺序,参考 https://blog.csdn.net/lk0328/article/details/82856160
将服务跳转的location放在第一位,这样按照顺序匹配,先将服务请求进行转发,然后将剩余的所有请求均转发到本地vue目录,还需要增加try_files $uri /index.html;这句话大致是说,不管什么路径请求,都会转发到index.html页面中,然后再根据后面的路由及参数,由页面进行处理。

ios webview 中的session问题
https://www.jianshu.com/p/4f7b8b885683

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值