我将cookie设置为域foo。我正在尝试将它们发送到例如api.foo的子域,但这样做没有成功。 根据mdn(https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)上cookie的规格,如果设置了域,则cookie会自动发送到子域。
我尝试过的事情:
let http = require('http')
http.createserver((req, res) => {
res.writeHead(200, {'Set-cookie': `hello=${10*Math.random()}; Domain=foo; Path=/`, 'Access-Control-Allow-Origin': '*'})
res.write(`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv='X-UA-Compatible" content="ie=edge">
<title>Document</Title>
<script defer>
fetch('http://api.foo:8080/')
</script>
</head>
<body>
fooooo
</body>
</html>
`);
res.end()
}).listen(8080)
我也在主机文件中添加了它: 127.0.0.1 foo 127.0.0.1 api.foo
这样,它们都将指向相同的位置,这样我就可以看到Cookie发生变化,而chrome不会阻止cookie的发送(如果是从文件中读取,则不会这样做)
在chrome浏览器中调试之后,我看到网络请求如下:
发送给foo的请求将发送cookie hello = 8.21,而没有域或路径,并且响应包含一个响应,其中包含cookie cookie hello = 2.33; Domain = .foo;路径= /;
发送的请求api.foo不包含任何cookie,但确实可以接收它们。
感谢您的帮助。