如何解决Cookie和Ajax的跨域问题
Cookie用来在浏览器端保存小文本信息,它的属性Domain和Path用来标识该Cookie在什么域和什么路径下有效。要使Cookie跨域如何实现?若是在同一顶级域名下实现各子域名跨域,可以设置Cookie的Domain,假设顶级域名是example.com,则设置Cookie.Domain=".example.com"即可。那不同顶级域名之间如何跨域呢?为各顶级域名生成一个相同名和值的Cookie、JSONP调研、SSO单点登录等。
众所周知Ajax调用默认也只能在同域下,即浏览器的同域策略。要实现Ajax跨域同样可以采用JSONP以及代理方式,另一方法是HTML5中的XHR2。服务端设置如下HTTP头:
context.Response.AppendHeader("Access-Control-Allow-Credentials", "true");//允许携带Cookie等凭证 context.Response.AppendHeader("Access-Control-Allow-Origin", "*");//允许所有来源域
而在JS端以Jquery为例如下设置:
$.ajaxSetup({ xhrFields: { //携带Cookie等凭证 withCredentials: true }, //允许跨域 crossDomain: true });