我在Jest 地设置e2e测试,我想让Fetch在我调用它时发送我的Cookie,如下所示:
const userinfo = await fetch('/api/auth/me')
我已经设置了我的JEST配置
testEnvironmentOptions: {
url: 'http://localhost:5544/'
},
并将import 'whatwg-fetch'
添加到我的jest.setup.js文件中,这很棒,它让我的FETCH请求在相对路径上工作.然而,我无论如何也不能拿来送来我的作者cookies .
我已经将我的cookie添加到文档中,如下所示
Object.defineProperty(window.document, 'cookie', {
writable: true,
value: 'auth=...',
});
我try 将Fetch credentials
属性设置为include
和same-origin
,但没有成功.我通读了CORS指南,但这都是关于如何让浏览器设置cookie的--在我的例子中,我已经自己设置了cookie.在我的服务器上,请求总是不附加Cookie.我被难住了,以前有人解决过这个问题吗?
最新情况: 我try 了更多的东西,但都没有成功:
- 将域和路径添加到Cookie
Object.defineProperty(window.document, 'cookie', {
writable: true,
value: 'auth=...;domain=localhost:5544;path=/',
});
- 添加"同源"模式以验证请求是否为同源(即,请求通过时没有错误)
const userinfo = await fetch('/api/auth/me', {credentials: "same-origin", mode: 'same-origin'});
- 在服务器端判断传入请求的标头:
{
referer: 'http://localhost:5544/',
'user-agent': 'Mozilla/5.0 (darwin) AppleWebKit/537.36 (KHTML, like Gecko) jsdom/20.0.3',
'accept-language': 'en',
accept: '*/*',
'accept-encoding': 'gzip, deflate',
host: 'localhost:5544',
connection: 'keep-alive'
}
这些都没有帮助,请求仍然可以在没有附加Cookie的情况下通过