跨域ajax请求如何携带cookie
来源:互联网 发布:国际大数据 编辑:程序博客网 时间:2024/04/29 04:58
A站点:www.a.com
B站点:www.b.com
当在A站点向B站点发起ajax请求时,
1、如果B站点的响应头里没有Access-Control-Allow-Origin: http://www.a.com(或者Access-Control-Allow-Origin: *),跨域请求是会失败的;
2、如果B站点的响应头里有Access-Control-Allow-Origin: * | http://www.a.com,那么跨域请求会成功,但是该请求不会携带B站点所在域的cookie(如果该请求不是ajax请求,而是img、script、iframe标签等发起的请求,那么该请求会携带B站点所在域的cookie,跟没跨域直接访问B站点对应的资源一样);
3、如果该ajax请求的xhr.withCredentials = true,且B站点的响应头包含Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: http://www.a.com(注意这里不能用泛型Access-Control-Allow-Origin: *),那么该ajax请求跟img、script、iframe标签等发起的请求一样,会携带B站点所在域的cookie;如果B站点的响应头里设置了cookie(如Set-Cookie: "name=tobi; Path=/mme=yy; Path=/",设置了name=tobi,mme=yy两个cookie),该cookie的domain是B站点的域名,而不是A站点的域名,同样也遵循同源策略,即B站点可以获取该cookie而A站点是无法获取的。
有两个Http头部和Cookie有关:Set-Cookie和Cookie。
Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie
Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。
对于GET跨域请求,浏览器不会发送一个“预请求”(OPTIONS请求)。但是,如果服务器端的响应中,如果没有返回Access-Control-Allow-Origin:* | 指定站点 的响应头,那么浏览器将不会把响应结果传递给发出请求的脚本程序,以保证信息的安全。
注意:对于以上A站点向B站点发起ajax请求的情况,以前我一直误认为Access-Control-Allow-Credentials:true是让请求携带A站点的cookie发送到B站点服务器,其实是让请求携带B站点的cookie发送到B站点服务器。
B站点:www.b.com
当在A站点向B站点发起ajax请求时,
1、如果B站点的响应头里没有Access-Control-Allow-Origin: http://www.a.com(或者Access-Control-Allow-Origin: *),跨域请求是会失败的;
2、如果B站点的响应头里有Access-Control-Allow-Origin: * | http://www.a.com,那么跨域请求会成功,但是该请求不会携带B站点所在域的cookie(如果该请求不是ajax请求,而是img、script、iframe标签等发起的请求,那么该请求会携带B站点所在域的cookie,跟没跨域直接访问B站点对应的资源一样);
3、如果该ajax请求的xhr.withCredentials = true,且B站点的响应头包含Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: http://www.a.com(注意这里不能用泛型Access-Control-Allow-Origin: *),那么该ajax请求跟img、script、iframe标签等发起的请求一样,会携带B站点所在域的cookie;如果B站点的响应头里设置了cookie(如Set-Cookie: "name=tobi; Path=/mme=yy; Path=/",设置了name=tobi,mme=yy两个cookie),该cookie的domain是B站点的域名,而不是A站点的域名,同样也遵循同源策略,即B站点可以获取该cookie而A站点是无法获取的。
有两个Http头部和Cookie有关:Set-Cookie和Cookie。
Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie
Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。
对于GET跨域请求,浏览器不会发送一个“预请求”(OPTIONS请求)。但是,如果服务器端的响应中,如果没有返回Access-Control-Allow-Origin:* | 指定站点 的响应头,那么浏览器将不会把响应结果传递给发出请求的脚本程序,以保证信息的安全。
注意:对于以上A站点向B站点发起ajax请求的情况,以前我一直误认为Access-Control-Allow-Credentials:true是让请求携带A站点的cookie发送到B站点服务器,其实是让请求携带B站点的cookie发送到B站点服务器。
阅读全文
0 0
- 跨域ajax请求如何携带cookie
- AFNetWorking 请求携带cookie
- php curl携带 cookie 请求
- 携带cookie进行数据请求
- vue项目使用axios发送请求让ajax请求头部携带cookie
- 在 ajax 跨域请求中携带 cookie 做身份认证 (xhr withCredentials属性)
- Android自定义携带Cookie的POST请求
- HTML5 App 跨域请求 携带cookie
- Android 加载需要携带cookie的图片请求
- curl携带jsession方式请求,获取cookie等
- Android使用OkHttp携带Cookie请求数据,并对Cookie进行持久化管理
- HttpClient模拟浏览器登录后发起请求(携带Cookie发请求)
- 本地HTMLajax跨域请求携带cookie数据,请求不会被登录拦截器拦截
- HttpClient模拟浏览器登录后发起请求(携带Cookie发请求)
- 携带Cookie登入
- 跨域Ajax请求时是否带Cookie的设置
- 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
- 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
- STL — list容器用法的详解
- MYSQL优化(二):索引优化、存储引擎优化、表结构优化等
- mysql optimize table
- 内核打印函数printk
- sklearn做单机特征工程
- 跨域ajax请求如何携带cookie
- LeetCode 141 Linked List Cycle
- ioni3 http请求数据绑定时数组嵌套的显示问题
- Linux 命令自动补齐快捷键
- Windows下制作Linux系统启动盘进行Linux安装
- 利用unity实现简单的贪吃蛇游戏
- 牛客网-剑指offer-04-重建二叉树
- 文章标题
- 网页布局之div与table的比较