首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用AJAX设置跨域cookie

用AJAX设置跨域cookie
EN

Stack Overflow用户
提问于 2016-11-16 02:30:21
回答 1查看 4.8K关注 0票数 0

假设我有域a.com和b.com,而且我拥有这两个域。b.com上有一个名为setcookie.aspx的页面,在服务器代码中,它在b.com域中设置了一个cookie。

我想从a.com (b.com已经允许来自a.com的CORS请求)向b.com/setcookie.aspx ie.aspx发出HTTP请求,如下所示:

$.get('http://www.b.com/setcookie.aspx');

由于某些原因,cookie没有被设置。但是,如果我将URL放在隐藏的图像标记中:

那就成功了。知道AJAX请求为什么不设置cookie吗?

EN

回答 1

Stack Overflow用户

发布于 2019-12-25 13:36:28

你需要做两个改变。

论a.com

正如@Jaromanda X在评论中指出的那样,您需要在您的$.get请求中设置$.get。除非您这样做,否则浏览器不允许设置跨域cookie。读这个XMLHttpRequest.withCredentials

论b.com

当要从服务器端设置cookie时,它将发送表单的标题:

set-cookie: key=val;expires=Fri,24-1月20日10:29:58 GMT;path=/;domain=example.com;HttpOnly;SameSite=Lax

注意SameSite=Lax标志。--这可以防止浏览器跨域设置cookie。

来自Mozilla套装-Cookie博士 声明不能将cookie与跨源请求一起发送,从而提供了一些防止跨站点请求伪造攻击的保护措施。

你需要禁用这个标志。这将取决于您的后端平台。我使用Django,对我来说,它只是改变了1设置萨梅塞特,这允许我通过跨域AJAX请求.设置会话id cookie。

一旦您做了这两个更改,跨域cookie将被设置。但是,要确保有足够的CORS和CSRF检查,以确保请求来自受信任的源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40623111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档