关于Ajax跨域访问 session不能保存或之后无法访问session取值为空等问题
2017-09-27 00:27
281 查看
根据浏览器的保护规则,跨域的时候我们创建的sessionId是不会被浏览器保存下来的,这样,当我们在进行跨域访问的时候,我们的sessionId就不会被保存下来,也就是说,每一次的请求,服务器就会以为是一个新的人,而不是同一个人,为了解决这样的办法,下面这种方法可以解决这种跨域的办法。
在ajax 请求要加配置$.ajax({ url:url, //加上 xhrFields及crossDomain xhrFields: { //允许带上凭据 withCredentials: true }, crossDomain: true, //以上 success:function(result){ alert("test"); }, error:function(){ } });
关于 withCredentials
withCredentials:默认情况下,跨源请求不提供凭据(cookie、HTTP认证及客户端SSL证明等)。通过将withCredentials属性设置为true,可以指定某个请求应该发送凭据。如果服务器接收带凭据的请求,会用下面的HTTP头部来响应。
“Access-Control-Allow-Credentials: true”
如果发送的是带凭据的请求,但服务器的相应中没有包含上面这个头部,那么浏览器就不会把相应交给JavaScript(于是,responseText中将是空字符串,status的值为0,而且会调用onerror()事件处理程序)。另外,服务器还可以在Preflight响应中发送这个HTTP头部,表示允许源发送带凭据的请求。
支持withCredentials属性的浏览器有Firefox 3.5+、Safari 4+和Chrome。IE10及更早版本都不支持。
同时
注意
在添加基本的允许跨域响应头之后需要添加 Access-Allow-Credentials:true
另外由于谷歌的安全策略
当withCredentials 为 true 时
ResponseHeader中的 Access-Allow-Origin 不能使用通配符 ‘*’
否则会提示
A wildcard ‘*’ cannot be used in the ‘Access-Control-Allow-Origin’ header when the credentials flag is true. Origin ‘http://url’ is therefore not allowed access.
其他浏览器待测试
相关文章推荐
- 关于hbase中进入shell但是无法使用的问题,以及web界面为什么不能访问。
- 关于outlook 保存的.msg文件打开一次之后不能再次打开的问题
- 关于springboot正常启动,路由却无法正常访问的问题
- 关于Entity Framework 4中保存时抛出"其它线程在运行,无法新建事务"的问题
- 关于3月27日部分用户不能访问个人博客前台的问题答复
- 关于win8下WAMP 无法用localhost访问的问题
- 关于友元函数无法访问类中私有成员等问题
- 关于oracle可以本地访问不能远程被访问的问题解决思路
- 关于iscroll滚动插件,在iOS下面,上拉之后无法回弹的问题
- 关于在DSPbuilder下含有MegaCoreFunction的模块无法保存问题的解决办法
- eclipse和tomcat有问题,每当修改一下java类或jsp文件,保存文件之后,项目就不能访问了!
- 关于default-action-ref标签不能访问相应的class中的action问题的解决方案
- centos6 关于 ssh,svn,tomcat远程不能访问的问题处理过程
- 关于苹果safari浏览器登陆时Cookie无法保存的问题
- 关于浏览器无法访问某些网站的问题
- 三星Note3 N900解决WIFI无法打开、打开缓慢、卡死、wifi密码重启不能保存等问题
- 关于腾讯云服务器 外网不能访问的问题
- 关于Nhibernate在wpf中的使用:Session.Save()无法保存数据到数据库中
- 关于无法访问子目录资源的问题
- 关于weka文件不能保存的问题