跨域传递cookie
cookie基本使用
首先,需要在服务端返回的头部信息中增加:
response.setHeader(“Access-Control-Allow-Origin”,“http://b.test.com”);
CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器同意,指定Access-Control-Allow-Credentials字段。
Access-Control-Allow-Credentials: true
另一方面,开发者必须在AJAX请求中打开withCredentials属性。
js:
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;jq:document.cookie=“pin=test;domain=test.com;”;$.ajax({url:_url,type:"get",data:"",dataType:"json",xhrFields: {withCredentials: true},crossDomain: true,
否则,即使服务器同意发送Cookie,浏览器也不会发送。或者,服务器要求设置Cookie,浏览器也不会处理。
需要注意的是,如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。同时,Cookie依然遵循同源政策,只有用服务器域名设置的Cookie才会上传,其他域名的Cookie并不会上传,且(跨源)原网页代码中的document.cookie也无法读取服务器域名下的Cookie。
这里纠正一个误区,不是设置了cookie的domain参数,cookie就可以被跨域传输的。 其实,cookie的domain属性所说的跨域,确切地说,应该是跨子域(subdomain)。比如我在bbs.readlog.cn这个子域(这里是二级域名)下设置的cookie,如果不特别的设置domain属性,那这个cookie就只能被bbs.readlog.cn这个子域下的程序读到,至于www.readlog.cn是无法读取到这个cookie的,而我如果在bbs.readlog.cn设置cookie的时候,设置cookie的domain属性为readlog.cn,那么所有的子域就都可以读到这个cookie了。 其实仔细想一下,也会知道所谓跨域A.com去读取B.com的cookie仅仅通过cookie的domain属性是行不通的,如果这样是可以的,那无疑是一个巨大的安全隐患。
关于cookie的domain属性详解:
- 在任何域名下,cookie的domain参数都只能指定为当前域名或上级域名(包括上级的上级,等等),此外都是无效的。
如:在t.a.b.com下,指定domain为t.a.b.com、a.b.com、b.com都是可行的。 - 在domain的参数前,是否存在符号“.”是完全相同的。
如:domain=a.b.com和domain=.a.b.com是完全相同的。 - 脚本只可访问domain参数设置为当前域名或上级域名(包括上级的上级,等等)的cookie,以及当前域名下设置的没有domain参数的
cookie。 - 如果不指定domain,则cookie无法在其他任何域名下被访问,即使是子域名。
- 指定domain与不指定domain的cookie是不相同的,即使下面的情况所产生的cookie也是不同的:
case1:在a.b.com下,设置无domain参数的cookie。
case2:在a.b.com下,设置domain=a.b.com的cookie。
case1和case2所生成的cookie是完全不同的。
跨域传递cookie相关推荐
- jmeter学习指南之深入分析跨域传递cookie
继上篇文章中介绍了Jmeter cookie manager的两种常用使用情况: jmeter视频:https://edu.51cto.com/course/14305.html 同一线程组和不同线程 ...
- iframe 跨域传递 cookie
最近在处理 iframe 跨域通讯(也就是PostMessage的应用,有兴趣可以看一下我的文章),发现了个比较头疼的问题:在 iframe 环境中,无法跨域读取内嵌网页的 cookie ,得到的结果 ...
- 请求跨域设置同时允许cookie跨域(携带cookie)
最近做一个前后端分离的项目,后台.Net 进行开发,使用session来进行身份验证.发现调用接口的时候总是显示未登录,经过检查发现每次请求过去的sessionid是不一样的,导致服务器找不到之前登陆 ...
- 转载 - 通过设置P3P头来实现跨域访问COOKIE
作者:老王 网上看了别人介绍的一片文章,说使用P3P可以完成跨域COOKIE操作,感觉很COOL,不过没有提供源代码,我胡乱写了一下,大家看看. 实际工作中,类似这样的要求很多,比如说,我们有两个域名 ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jQuery ajax跨 ...
- php跨域单点登录,SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析...
SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1. 跨域redirect实例: te ...
- PHP 通过设置P3P头来实现跨域访问COOKIE
我的是CentOS的系统(Linux 内核) 编辑HOST vi /etc/hosts 加入 127.0.0.1 www.a.com 127.0.0.1 www.b.com ...
- 关于跨域获取cookie问题的解决
关于跨域获取cookie问题的解决 参考文章: (1)关于跨域获取cookie问题的解决 (2)https://www.cnblogs.com/whoamme/p/3598889.html 备忘一下.
- 【跨域】一篇文章彻底解决跨域设置cookie问题!
一篇文章彻底解决跨域设置cookie问题! 大家好我是雪人~~⛄ 之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用. 是因为谷歌浏览器新版本Chrome 80将Cookie ...
最新文章
- 【POCO】POCO学习总结(四)——MinGW编译poco
- C strcpy和strcat
- 【采用】机器学习在金融大数据风险建模中的应用
- 一次群晖中勒索病毒后的应急响应
- 基于网格的空间数据组织
- Linux下Verilog仿真过程(一)
- 无线鼠标可以强制配对_赛睿Rival 3 Wireless游戏鼠标评测:无限全能
- 查看某个文件是否正在被修改
- mongodb与java连接_MongoDBJava连接
- 如何正确地逛Github?
- Java solrj client 添加JavaEntity Bean
- 村级行政shape_行政区划图边界制作shap.doc
- c++运动学正反解 ros_MoveIt编程实现关节空间机械臂运动(正运动学)
- 如何快速下载百度网盘大文件
- 架构师应该具备什么技能
- Symbian手记【一】 —— Symbian命名法
- Android Studio 插件-Android Styler 的使用 (转)
- 解压缩zip文件的工具类
- 【N32G457】基于RT-Thread和N32G457的墨水屏日历
- 【UE4】给制作的小地图加上方向指针