跨域传递cookie
来源:互联网 发布:mac 应用程序图标 编辑:程序博客网 时间:2024/06/06 03:38
首先,需要在服务端返回的头部信息中增加:
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属性详解:
1. 在任何域名下,cookie的domain参数都只能指定为当前域名或上级域名(包括上级的上级,等等),此外都是无效的。
如:在t.a.b.com下,指定domain为t.a.b.com、a.b.com、b.com都是可行的。
2. 在domain的参数前,是否存在符号“.”是完全相同的。
如:domain=a.b.com和domain=.a.b.com是完全相同的。
3. 脚本只可访问domain参数设置为当前域名或上级域名(包括上级的上级,等等)的cookie,以及当前域名下设置的没有domain参数的
cookie。
4. 如果不指定domain,则cookie无法在其他任何域名下被访问,即使是子域名。
5. 指定domain与不指定domain的cookie是不相同的,即使下面的情况所产生的cookie也是不同的:
case1:在a.b.com下,设置无domain参数的cookie。
case2:在a.b.com下,设置domain=a.b.com的cookie。
case1和case2所生成的cookie是完全不同的。
- 跨域传递cookie
- 跨域实现cookie传递
- 利用p3p跨域传递COOKIE
- ajax跨域请求及传递cookie
- 前后端分离cookie跨域传递
- ajax跨域传递cookie,验证登录
- ajax跨域请求及传递cookie
- PHP Cookie与Session跨域访问、传递
- ajax处理跨域请求和传递cookie
- Cookie&&Cookie跨域操作
- 使用Cookie传递数据
- 使用Cookie传递数据
- WebViewJavascriptBridge传递Header、Cookie
- Cookie的传递流程
- 客户端禁用cookie时,实现Session值跨页面传递
- 通过P3P协议,实现跨域set cookie,解决同域IFRAME中SESSION传递失效问题
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
- BUG_ON()和WARN_ON()的用法
- hdu In Action-最短路+01背包
- 2.1 Kotlin 搭建简单Kotlin 命令行开发环境
- 数组指针和指针数组的区别,以及如何利用他们访问数组里面的元素
- Github Pages 自定义域名
- 跨域传递cookie
- 阿里云香港vps亲测
- idea创建springcloud项目图文教程(创建服务提供者)(七)
- 用Battery Historian 3.0分析android手机电池消耗
- 解决异常:Cause: java.sql.SQLException: Field 'id' doesn't have a default value
- ReJava操作符 distinct 、Filter
- str2-jq-ajax
- Java语言的简单输入输出
- 代码片段----patternsearch