javascript - 跨站点服务器上的 jQuery/Ajax 请求不使用该服务器上设置的 (auth) cookie

标签 javascript jquery ajax cross-domain

我们有一个网页,可以从另一台服务器获取数据。该页面是“本地”加载的(即从文件系统加载,该 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/

相关文章:

javascript - 绑定(bind)到 ItemView 的变化事件

javascript - 错误: JavaScript Function Add to class dynamically

javascript - 从元素列表中找出哪个元素被点击

链接点击时的 JQuery 函数

javascript - Jquery 数据表复选框

javascript - 如何使用 OAuth 2.0 实现 Web 小部件

javascript - 使用 amcharts 创建百分比

javascript - 在页面滚动时更改导航栏背景颜色

javascript - 是否有一些现成/默认代码可以阻止 Internet Explorer 6 或更低版本?

javascript - ajax更新后无法使用jquery选择表行id