我从 JavaScript 中设置了一个 cookie,如下所示:
document.cookie =
't=sometokengoeshere; max-age=3600; domain=localhost; samesite=strict';
之后,cookie就真的存在了:
console.log(document.cookie); // outputs correct cookie
如果我的 JavaScript 是从 localhost:3000 提供的,并尝试联系我在 localhost:80 上运行的后端,浏览器会确实发送 cookie 以及后续请求。这很奇怪,因为我认为这应该被视为跨域。
但是,如果我的 JavaScript 和后端都从 localhost:80 提供服务,则浏览器不会不将 cookie 与后续请求一起发送。控制台中没有错误消息。
我提到的“后续请求”是在我像这样设置 HTMLAudioElement 的 url 后由浏览器发出的请求:
audio.src = 'http://localhost/audio.php';
当然,我在设置 cookie 之后 执行上述操作。
我可以在 Firefox 和 Chrome 中重现这种奇怪的行为。这里发生了什么?我还尝试从 cookie 中删除 domain
或 samesite
,或者使用 samesite=lax
,也不起作用。