今天遇到一个问题,苹果的safari浏览器访问,存储不了session,查了一些资料,说是safari浏览器每一次请求都会创建一个新的session,我当时就震惊了额,
那怎么办,和经理聊了一下我们的访问方式之后解决了。
简单和大家介绍一下背景,我们是页面书写人员在本地起了一个服务,页面通过js的ajax发送jsonp跨域的请求来访问测试服务器的接口,
在这种情况下,浏览器发送请求访问两个接口(A,B),A接口像手机发送一个验证码,并把验证码存放session中,此时在A中是可以取出session值的;但是在
浏览器访问接口B时,就取不出来session值了。
这么一来我的直觉告诉我,这是浏览器的问题,因为我用安卓都没有问题,但是苹果确有问题,最终确定和浏览器没有关系。
因为页面在本地起的服务,访问在另一台服务器的接口服务,这样的话,就像两个session容器罐子,页面的session在1号罐子里,而另一台服务器上的sesion在2号
罐子里,这样当浏览器访问访问2号罐子时,我们就发现当我们从1号罐子发来的request中取session时,就会取不到session了。因为页面所在的服务器和另一台
服务器中session是两个不同的概念。
解决方案:
1.将页面放在接口服务下放在同一个服务器下。
2.使用redis等做session的共享(可能这个说法不是很准确,希望大家可以见谅)。