【问题标题】:AngularJS - Does $resource requests send cookies automatically?AngularJS - $resource 请求是否自动发送 cookie?
【发布时间】:2013-08-16 11:45:03
【问题描述】:

我在我的 angularJS 应用程序中使用了一个 $resource。它会自动发送我的 cookie 吗?我在同一个域上做请求。

【问题讨论】:

    标签: angularjs angular-resource angular-cookies


    【解决方案1】:

    没有。但是如果你想发送 cookie,那么你可以尝试$cookies 服务来获取 cookie 并使用 API 发送到有效负载中或包含在标头中。

    您还可以在默认标头中设置 cookie(注入$cookies 服务),这样您就不必在所有 API 调用中指定它。

    var cookie = $cookies.myCookie; // suppose you already set $cookies.myCookie= 'xxx';
    $http.defaults.headers.post.Cookies = cookie;
    

    【讨论】:

    • 回帖如何处理?我所有的请求都通过 $resource 对象。
    • @poiuytrez 找到答案了吗?我想批量分配 10 个资源,并从您的学习中受益。
    【解决方案2】:

    只要满足所有假设(相同的域、匹配的路径、匹配的端口、相同的协议、未过期等),浏览器将始终与请求一起发送 cookie(无论它是否是 XHR 请求) .

    由于$resource 服务只是一个简单的 Ajax 包装器,您的 cookie 将/应该被发送(如果一切就绪)。

    【讨论】:

    • 如果是不同的域怎么办?
    【解决方案3】:

    请注意,在同一域但在不同端口上运行不同的应用程序也可能是不发送 cookie 的一个原因。

    Cookie 不应该是特定于端口的(关于 SOP),但 CORS 绝对是。另见Are HTTP cookies port specific?

    根据我的经验,当前没有浏览器(FF 47、Chrome 51、IE11)在 XHR 请求中发送 cookie,例如从 localhost:3000 到 localhost:8080。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 2016-05-27
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      相关资源
      最近更新 更多