全匹配Access-Control-Allow-Origin 和设置Access-Control-Allow-Credentials为true(enable cookie)才能带Cookie跨域访问。
带cookie的时候,origin必须是全匹配,不能使用*,还要设置Credentials为true
aaaaa
带cookie的跨域。
服务端(被调用方)解决跨域问题设置response header
一、http会话session依赖于cookie, sessionid存放在cookie中。
二、ajax
1、$.ajax({
type: "get",
xhrFields: {
widthCredentials: true // 发送ajax请求的时候会带上cookie
}
})
2、cookie是加在被调用方。
服务端就是被调用方,而客户端就是调用方。在浏览器的控制台中通过document.cookie="" 来设置cookie。
3、读cookie只能读到本域的。
4、带cookie时,后台代码注意以下2点:
(1)带cookie的时候,Access-Control-Allow-Origin,必须是全匹配,如http://localhost:8081, 不能是 *,否则报错,如下:
(2)带cookie进行跨域时,需要设置以下请求头:
res.addHeader("Access-Control-Allow-Credentials", "true")
带cookie的时候,origin必须是全匹配,不能使用*,并且响应头里面必须带有Access-Control-Allow-Credentials字段,且值为true
一、http会话session依赖于cookie, sessionid存放在cookie中。
二、ajax
1、$.ajax({
type: "get",
xhrFields: {
widthCredentials: true // 发送ajax请求的时候会带上cookie
}
})
2、cookie是加在被调用方。
3、读cookie只能读到本域的。
4、带cookie时,后台代码注意以下2点:
(1)带cookie了的时候,Access-Control-Allow-Origin,必须是全匹配,如http://localhost:8081, 不能是 *
(2)enable cookie
res.addHeader("Access-Control-Allow-Credentials", "true")
如果允许带cookie的跨域请求
后端操作
Access-Control-Allow-Origin 不能为*
增加请求头"Access-Control-Allow-Credentials","true"
withCredentials:true携带cookie访问
带cook的跨域
总结:注释
在带cookie的跨域请求中
要在响应头中设置Access-Control-Allow-Credentials的值为true
前面设置响应头Access-Control-Allow-Origin: *,可以解决跨域,但是在带cookie的跨域请求中就不能试用了,浏览器会报错
在被调用方加上cookie。
因为在网络请求里,只能访问到本域的cookie
前台 设置 发送ajax请求带上cookie
带cookie的跨域(发送的cookie只能是被调用方的cookie,而不是调用方的cookie)
前面设置响应头Access-Control-Allow-Origin: *,可以解决跨域,但是在带cookie的跨域请求中就不能试用了,浏览器会报错
另外,浏览器还会报另一个错误
这是只需要在响应头中设置Access-Control-Allow-Credentials的值为true
总结:带cookie 的时候,origin必须是全匹配,不能试用*;第二就是要增加一个响应头
带cookie的请求