Ajax跨域携带并发送cookies的理解

2020-10-19 JavaScript 1062

跨域前提条件

需要服务端设置响应报文:Access-Control-Allow-Origin

  • 全部可访问 Access-Control-Allow-Origin: *

  • 指定域名访问 Access-Control-Allow-Origin: abc.com

服务端响应头设置携带cookies

要求ajax请求时携带cookies,服务端需要设置响应头:Access-Control-Allow-Credentials: true

注意:

仅且只有在设置指定域名访问时,即 Access-Control-Allow-Origin: abc.com 时,才允许携带cookies

关于跨源发送cookie

xhr.withCredentials=true;

这里跨源指的是 跨的二级的域,根域必须相同,而且cookie的域必须是根域
比如 a.a.cn可以通过这里所说的跨源 在向b.a.cn发送ajax请求时 带上 .a.cn下的cookie
不要以为 域在.a.cn下的cookie ,a.a.cn在向b.a.cn发请求时 会自动带上
也不要认为cookie的跨源能跨根域,是不可能的

文章来源:H&K-跨源通信-cnblogs

建议

综上,建议需要前端携带cookies时,不依赖请求头,直接通过js获取cookies,在请求params里拼接发送给服务端。

0