javascript - 跨域请求的 Cookie

标签 javascript cookies cross-domain

我在 domain.com 上托管了一个网络应用程序,它有一个注册表单。

当用户完成注册表单时,网络应用会调用托管在 app.domain.com 上的 API。

Api 是一个 POST 请求,使用 JavaScript 的 XmlHttpRequest 调用,响应包含一个 Set-Cookie header 。

但是,当我检查 app.domain.com 的 cookie 时,在 Api 请求中收到的 cookie 是存在的。

我认为浏览器会自动处理 cookie,并且由于对 app.domain.com 的请求返回一个 Set-Cookie header ,因此浏览器会在对 app.domain.com 的所有后续请求中包含该 cookie。

API 请求:

Request URL:https://app.domain.com/api/account/subscribe
Request Method:POST

API 响应

Set-Cookie:.AspNet.ExternalBearer=DlOvLGlPLlMWO4mXUcH9ieWNSTpRZ80hhWEKXrFUN-BOfwUsVu4x4qNXizpvdRWA4eIyijsmQARICLPOC-spzXjEVzz-WvO2ZsnSR30kM65dpkALqCUn2OgU2Zqc-fF5mESeYCEDeBCbHuSedCNqWfCIUX3mbeoI3vMu1086YwsinlnUkGe4gC9Ggk44N0PPuoh3J1xl85zUVhd9AsoaUspPzX2zlzkPmJMyb3shx9VlE8dx0ePQLuQhbHfnQdt8L5I5W9NK8uM3lJtHWKvR5lszd7AyuMDmX1N_MA7fGRAHCsW8FcCCvzeM9oH3c5zZU0uLKQKT5NZF8QyUdDGq6H6U5dPhm5FLTmsCw3qfLGXvIbO8uu-9p__VdEmvgr60D78uWrg6K-akNYNQDHVWvNyVdOYwM8N2H3l0hiTV8GveiZV-WpI4VSGFoOr821H8PRj1eC6UT6GiTFeksp7JmFLKuVLx8YY6uLcQYldQQUKDnvSiteZbwVg-DSYnGW9FdN3t9AdbUaW3mjFTCz_of5utAO9Fl8TFS02GucZLMCFEfxBkHh9qcmWUMrauWOLl59huTAFYDoCGG9pi06Hvm7ggF3H4oP-fXyFe85AsRC4; domain=app.domain.com; path=/; secure; HttpOnly

随后对 app.domain.com 的请求中不包含 cookie

那么,缺少什么?

谢谢!

最佳答案

您需要设置 withCredentials 标志,以便 cookie 在进行跨域请求时正常工作。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials :

In addition, this flag is also used to indicate when cookies are to be ignored in the response.

关于javascript - 跨域请求的 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39674586/

相关文章:

javascript - NODE 中同时 GET 和 POST 请求

javascript - 需要一个cookie来保存字体大小

c# - 如何在 GeckoFX 中为不同的控件存储不同的 cookie

c# - 特定域的 DNS 解析失败。域与 nslookup 一起使用

Javascript Div 滚动 - 一些问题

javascript - 使用 JavaScript 样式打印页面

javascript - 来自 AmpersandJS 的跨源请求

python-3.x - 使用 Python selenium 单击 iframe 元素

javascript - Vue.JS 2.5.1 : Uncaught SyntaxError: Unexpected token export

javascript - 如何让 hls.js 在请求加密 key 时在请求 header 中发送 cookie