普通的AJAX请求(非跨域的情况)是默认携带cookie的,但是在跨域时则是不携带cookie的。跨域时携带cookie的方法有三种:
- Nginx反向代理
- JSONP
- CORS
对Cookie跨域的理解
假设服务端的域名是a.com
,发送跨域请求的前端的域名是b.com
,那么在b.com
想a.com
发送跨域请求时,是可以携带cookie的,但是这个cookie必须是域名为a.com
下的cookie
也就是说,b.com
的前端发送的跨域请求携带的cookie,是目标页面所在域的cookie。
所以带cookie跨域的前提是目标页面的cookie在本机存在,跨域要携带的cookie必须是目标页面所在域的cookie
之前的理解有两个误区:
b.com
向a.com
发送跨域请求,可以把b.com
域名下的cookie带上。如上面所说的,这是行不通的b.com
通过JS在本机生成一个域名a.com
的Cookie,或者a.com
的服务端在发送响应时setCookie
的domain
为b.com
。这两种做法都是行不通的,因为设置cookie的domain
可以设置为父域名和自身,但是不能设