如何解决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
});


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.9icode.com/index.php/post/14.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。