Ajax加载子域跨站cookie丢失的问题.
2014-09-15 15:56
218 查看
我们有两个网站一个是main.xxx.cn 一个是 preveiw.xxx.cn
main.xxx.cn 页面需要加载preview.xxx.cn的内容。
项目里面出现了两种的加载preview.xxx.cn内容的方式。一种是iframe另一个是ajax。
1.iframe加载的要求 两个页面都把 document.domain = 设置成根域名 就是xxx.cn。
(其它thickbox magnific popup 如果加载同一个域名下面的页面也需要去设置 document.domain否者的话也会造成js无法访问。因为域名被你改了)。
2.ajax 加载的时候 需要设置 orign
fResponse.AddHeader("Access-Control-Allow-Origin", origin);
origin的标签可以通过firebug看到 大约是http(s)://main.xxx.cn 也可以用 *
但是只这样设置的话会发现 preview.xxx.cn原来设置的cookie值无法传递。 需要设置一下 withCredentials 象下面这样。 并且需要把 orgin的值强制设成完全一样的,不能用 通配符 *.
还需要多加一个httpHeader
Response.AddHeader("Access-Control-Allow-Credentials", "true");
$.ajax({
url: 1.aspx
dataType: "Html",
xhrFields: {
withCredentials: true
},
}
main.xxx.cn 页面需要加载preview.xxx.cn的内容。
项目里面出现了两种的加载preview.xxx.cn内容的方式。一种是iframe另一个是ajax。
1.iframe加载的要求 两个页面都把 document.domain = 设置成根域名 就是xxx.cn。
(其它thickbox magnific popup 如果加载同一个域名下面的页面也需要去设置 document.domain否者的话也会造成js无法访问。因为域名被你改了)。
2.ajax 加载的时候 需要设置 orign
fResponse.AddHeader("Access-Control-Allow-Origin", origin);
origin的标签可以通过firebug看到 大约是http(s)://main.xxx.cn 也可以用 *
但是只这样设置的话会发现 preview.xxx.cn原来设置的cookie值无法传递。 需要设置一下 withCredentials 象下面这样。 并且需要把 orgin的值强制设成完全一样的,不能用 通配符 *.
还需要多加一个httpHeader
Response.AddHeader("Access-Control-Allow-Credentials", "true");
$.ajax({
url: 1.aspx
dataType: "Html",
xhrFields: {
withCredentials: true
},
}
相关文章推荐
- ajax跨域以及cookie丢失问题解决
- 解决ajax跨域请求数据cookie丢失问题
- [置顶] fineuploader 跨子域上传文件 cookie丢失问题的解决
- 解决ajax跨域请求数据cookie丢失问题
- ajax 跨域丢失cookie的问题
- 解决ajax跨域请求数据cookie丢失问题
- 关于ajax 客户端框架未能加载 sys 未定义的问题
- Asp.net mvc如果解决Iframe、Frameset 中Session、Cookie丢失的问题。
- Apache Commons-httpclient-3.1重定向时Cookie丢失缺陷问题(Java)。
- 解决IE6下Asp.net Ajax客户端框架未能加载的问题
- 跨子域的Cookie的清除问题
- Javascript 对话框 (遇到 Ajax Load无法加载问题)
- .NET----AJAX动态加载用户控件问题
- IE6丢失COOKIE的问题,令人郁闷的P3P协议
- [Web开发] IE Cookie丢失问题的常见原因
- [Web开发] IE Cookie丢失问题的常见原因
- 采集需要登录后的网页(重定向后cookie丢失问题)
- AJAX问题:如果SESSION丢失,会直接报错。
- cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
- 解决ajax加载fckeditor的问题