gpt4 book ai didi

jquery - 使用 CORS (Access-Control-Allow-Origin) 响应 header 集执行 XSS 时,cookie 不会在 ajax 请求 header 中发送

转载 作者:行者123 更新时间:2023-12-01 02:58:39 26 4
gpt4 key购买 nike

我似乎无法在 javascript 中将浏览器上设置的 cookie 作为 jQuery ajax 请求的一部分发送到子域 Web 应用程序。

我有两个 Web 应用程序,一个位于根域,一个位于子域。为了绕过跨站点脚本限制,我的子域 Web 应用程序实现了一个全局操作过滤器,以将 Access-Control-Allow-Origin header 添加到其所有 http 响应的根域。这允许从根域到子域的 ajax 调用起作用。

但是,当我使用以下代码在 javascript 中创建 cookie 时...

var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = 'searchId=' + ids.generateGUID() + ';domain=' + ".root.example.com" + ';path=/;expires=' + myDate;

...后续ajax请求中不会传递cookie到子域服务器。

我认为 CORS header 并在 cookie 中设置域和路径将允许子域 Web 应用程序访问 cookie,但浏览器(chrome 21.0.1180.89 和 firefox 17.0.1)似乎不提供 cookies 。

使用子域和 ajax 请求时我是否误解了浏览器 cookie 访问限制?

谢谢

最佳答案

为了让 cookie 能够与 CORS 配合使用,您需要做两件事。

首先,您的服务器需要使用以下 header 进行响应:

Access-Control-Allow-Credentials: true

其次,您的 XmlHttpRequest 对象需要设置 withCredentials 属性:

xhr.withCredentials = true;

这应该在请求中发送远程域 cookie,尽管 cookie 必须由远程服务器设置。

您的 JS 代码本身仍然无法访问 cookie,也无法在远程域上设置 cookie。 JS 代码没有办法访问另一个域的 cookie。

关于jquery - 使用 CORS (Access-Control-Allow-Origin) 响应 header 集执行 XSS 时,cookie 不会在 ajax 请求 header 中发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14362830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com