【问题标题】:Cookies on cross domain requests跨域请求的 Cookie
【发布时间】:2017-02-02 03:06:36
【问题描述】:

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

当用户完成注册表单时,Web 应用程序调用托管在 app.domain.com 上的 Api。

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

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

我认为浏览器会自动处理 cookie,并且由于对 app.domain.com 的请求会返回一个 Set-Cookie 标头,因此浏览器会在对 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

那么,缺少什么?

谢谢!

【问题讨论】:

  • 我没有尝试将 cookie 包含在对 www.app.domain.com 的请求中,而是根据对 www.app.domain.com 的请求的响应设置一个 cookie
  • “此外,该标志还用于指示何时在响应中忽略 cookie。”
  • CBroe,我该如何感谢你? :) 请回答问题,以便我将其标记为已接受!干杯!

标签: javascript cookies cross-domain


【解决方案1】:

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

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

此外,此标志还用于指示何时在响应中忽略 cookie。

【讨论】:

    【解决方案2】:

    您必须在 cookie 中明确设置域。

    Set-Cookie: name=value; domain=domain.com

    here了解更多详情。

    【讨论】:

    • 酷Jakub!确实查看了没有设置域的标题。让我试试,我会回复你的!谢谢
    猜你喜欢
    • 2019-02-11
    • 2021-03-12
    • 2015-12-21
    • 2012-02-09
    • 2014-01-13
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多