【发布时间】:2013-08-16 11:45:03
【问题描述】:
我在我的 angularJS 应用程序中使用了一个 $resource。它会自动发送我的 cookie 吗?我在同一个域上做请求。
【问题讨论】:
标签: angularjs angular-resource angular-cookies
我在我的 angularJS 应用程序中使用了一个 $resource。它会自动发送我的 cookie 吗?我在同一个域上做请求。
【问题讨论】:
标签: angularjs angular-resource angular-cookies
没有。但是如果你想发送 cookie,那么你可以尝试$cookies 服务来获取 cookie 并使用 API 发送到有效负载中或包含在标头中。
您还可以在默认标头中设置 cookie(注入$cookies 服务),这样您就不必在所有 API 调用中指定它。
var cookie = $cookies.myCookie; // suppose you already set $cookies.myCookie= 'xxx';
$http.defaults.headers.post.Cookies = cookie;
【讨论】:
只要满足所有假设(相同的域、匹配的路径、匹配的端口、相同的协议、未过期等),浏览器将始终与请求一起发送 cookie(无论它是否是 XHR 请求) .
由于$resource 服务只是一个简单的 Ajax 包装器,您的 cookie 将/应该被发送(如果一切就绪)。
【讨论】:
请注意,在同一域但在不同端口上运行不同的应用程序也可能是不发送 cookie 的一个原因。
Cookie 不应该是特定于端口的(关于 SOP),但 CORS 绝对是。另见Are HTTP cookies port specific?
根据我的经验,当前没有浏览器(FF 47、Chrome 51、IE11)在 XHR 请求中发送 cookie,例如从 localhost:3000 到 localhost:8080。
【讨论】: