ajax 跨域无法携带cookie 解决办法

Posted Sunnie*花儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax 跨域无法携带cookie 解决办法相关的知识,希望对你有一定的参考价值。

ajax 跨域无法携带cookie,需要用到session,终于完美结局

xhrFields: {
withCredentials: true
},
添加这个可能是大家都会做的一件事
但是添加上了之后就出现了另外一个问题
The ‘Access-Control-Allow-Origin‘ header contains the invalid value ‘Origin‘. Origin 。。。。。。

   2、服务器server端要配置Access-Control-Allow-Credentials

  我们在客户端设置了withCredentials=true 参数,对应着,服务器端要通过在响应 header 中设置Access-Control-Allow-Credentials = true来运行客户端携带证书式的访问。通过对Credentials参数的设置,就可以保持跨域Ajax时传递的Cookie。

response.setHeader("Access-Control-Allow-Credentials", "true");

  3、服务器server端要配置Access-Control-Allow-Origin

  到以上配置为止,发送ajax请求,我们发现还会出现一个错误,提示我们 Access-Control-Allow-Origin 不能用 * 通配符。原因是:当服务器端 Access-Control-Allow-Credentials = true时,参数Access-Control-Allow-Origin 的值不能为 ‘*‘ 。

  我们重新设置Access-Control-Allow-Origin的值,当服务器端接收到请求后,在返回响应时,把请求的域Origin填写到响应的Header信息里(即谁访问我,我允许谁),代码如下:

response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));

添加了这个就可以了


以上是关于ajax 跨域无法携带cookie 解决办法的主要内容,如果未能解决你的问题,请参考以下文章

ajax跨域请求无法携带cookie的问题

Ajax跨域请求COOKIE无法带上的解决办法

前端Jquery-Ajax跨域请求,并携带cookie

跨域请求如何携带cookie?不小心都拿了Offer

java Ajax跨域请求COOKIE无法带上的解决办法

Ajax跨域请求携带cookie问题