Cookie不存储在浏览器中,跨域GET请求
Cookie is not stored in the brower, cross domain GET request
我有一个使用 GET 请求提供文件的域(比如 cookiebaker.com)。每当发出请求时,cookiebaker 服务器都会在文件响应中添加 set-cookie header。
这里是一个例子header(Max-Age设置为未来1个月):
set-cookie: cookie_name=cookie_value; Max-Age=2592000; secure; HttpOnly; SameSite=Lax
现在,当我从另一个域调用 cookiebaker.com 时(比如 munchies.com),我可以在 GET 响应中看到 set-cookie header,但是 munchies.com 不存储 cookie。我在开发工具中没有看到cookie,在后续请求中也没有上传。
我知道在执行 GET 请求时我必须将 "withCredentials" 标志设置为 true,但这对我的情况没有帮助。
这是我精简的 munchies.com 代码:
let request = new XMLHttpRequest();
request.open('GET', "https://cookieBaker.com?param=value");
request.withCredentials = true; // Tell the browser to receive cookies
request.send();
还有什么可以阻止 cookie 存储在浏览器中吗?这些是 GET 响应中包含的所有访问控制 header(本地主机是 munchies.com 的 "real" 名称,用于我的测试):
access-control-allow-credentials: true
access-control-allow-headers: Authorization, Content-Type
access-control-allow-methods: OPTIONS, GET, POST, PUT, PATCH, DELETE
access-control-allow-origin: http://localhost
access-control-expose-headers: X-WP-Total, X-WP-TotalPages
您已在 cookiebaker.com
cookie 上明确设置 SameSite=Lax
,这将限制它在跨站点上下文中发送,例如fetch()
来自 munchies.com
.
对于显式跨站点 cookie,您应该使用 SameSite=None;Secure
。有关更深入的实施细节,请参阅 https://web.dev/samesite-cookie-recipes
我有一个使用 GET 请求提供文件的域(比如 cookiebaker.com)。每当发出请求时,cookiebaker 服务器都会在文件响应中添加 set-cookie header。
这里是一个例子header(Max-Age设置为未来1个月):
set-cookie: cookie_name=cookie_value; Max-Age=2592000; secure; HttpOnly; SameSite=Lax
现在,当我从另一个域调用 cookiebaker.com 时(比如 munchies.com),我可以在 GET 响应中看到 set-cookie header,但是 munchies.com 不存储 cookie。我在开发工具中没有看到cookie,在后续请求中也没有上传。
我知道在执行 GET 请求时我必须将 "withCredentials" 标志设置为 true,但这对我的情况没有帮助。
这是我精简的 munchies.com 代码:
let request = new XMLHttpRequest();
request.open('GET', "https://cookieBaker.com?param=value");
request.withCredentials = true; // Tell the browser to receive cookies
request.send();
还有什么可以阻止 cookie 存储在浏览器中吗?这些是 GET 响应中包含的所有访问控制 header(本地主机是 munchies.com 的 "real" 名称,用于我的测试):
access-control-allow-credentials: true
access-control-allow-headers: Authorization, Content-Type
access-control-allow-methods: OPTIONS, GET, POST, PUT, PATCH, DELETE
access-control-allow-origin: http://localhost
access-control-expose-headers: X-WP-Total, X-WP-TotalPages
您已在 cookiebaker.com
cookie 上明确设置 SameSite=Lax
,这将限制它在跨站点上下文中发送,例如fetch()
来自 munchies.com
.
对于显式跨站点 cookie,您应该使用 SameSite=None;Secure
。有关更深入的实施细节,请参阅 https://web.dev/samesite-cookie-recipes