我们有一个网页,可以从另一台服务器获取数据。该页面是“本地”加载的(即从文件系统加载,该 Web 应用程序将被放置在 PhoneGap 应用程序内,因此我们通过从 file://url 加载它来将其模拟到 firefox/chrome 中),并使用 jquery 和 ajax从服务器检索数据。 服务器似乎配置为遵守 CORS 标准(http://www.w3.org/TR/cors/,即我们设置诸如 Access-Control-Allow-Origin、Access-Control-Allow-Credentials 和 Access-Control- Max-Age),但尽管如此,服务器设置的 session cookie 似乎永远不会被读取或传回服务器。 如果我们在服务器上“手动”创建 session (即在地址栏上发出请求,以便服务器在客户端上设置 cookie),然后打开上述页面,则该 cookie 永远不会传回服务器在 Ajax 请求中。
有什么可能出错的提示吗?
最佳答案
您在什么浏览器中测试这个? IE 和 Safari 对于允许设置 cookie 的响应有特殊的规则,特别是当它们是从本地页面主机生成时。您是否在非本地文件系统的某个域上测试过此页面?
对于 IE,您需要配置服务器的 P3P header 。对于 Safari,您必须先浏览到服务器的 URL,然后才能允许来自不同域的页面发出的任何请求设置 Cookie。
关于javascript - 跨站点服务器上的 jQuery/Ajax 请求不使用该服务器上设置的 (auth) cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4404000/