如何让node + jsdom中的mock service worker 运行(用于测试)接收跨域cookie?
How to make mock service worker running in node + jsdom (for tests) receive cross-domain cookies?
我有一个带有 Jest + MSW 的 reproduction repo,我正在尝试让 MSW 接收跨域 cookie。默认情况下,JSDOM 在 http://localhost
上加载。当向该域发送提取请求时,MSW 也在该域上侦听,一切正常,已收到 cookie。
但是,当尝试向另一个域发送请求时,例如 http://localhost:4444
,没有 cookie 被发送到 MSW。奇怪的是,如果我注释掉 MSW 并在同一个端口上启动一个快速服务器,它确实会收到所有的 cookie。为什么他们被发送到快递服务器而不是 MSW?
最后,同样奇怪的是,如果MSW和express服务器都是运行,MSW在4444,Express在5555,express服务器将不再接收cookies。就好像 MSW 的 beforeAll(() => server.listen());
以某种方式杀死了跨域 cookie。
Cookie 设置:
setCookie("local00=L00", "http://localhost");
setCookie("local44=L44", "http://localhost:4444");
setCookie("local55=L55", "http://localhost:5555");
setCookie("local66=L66", "http://localhost:6666");
fetch(http://localhost) --> handler("http://localhost"): OK! all cookies received
fetch(http://localhost:4444) --> handler("http://localhost:4444): No cookies received
OR
--> express("http://localhost:4444): OK! all cookies received
fetch(http://localhost:4444) --> handler("http://localhost:5555): No cookies received
AND
--> express("http://localhost:4444): No cookies received
如何向 MSW 发送跨源请求并让它接收 cookie?
MSW 当前在 JSDOM 中 运行 时不支持 window.fetch
上的 credentials
选项(参见 related issue, and the pull request that adds that support)。期待在下一个次要版本中添加此功能。谢谢
我有一个带有 Jest + MSW 的 reproduction repo,我正在尝试让 MSW 接收跨域 cookie。默认情况下,JSDOM 在 http://localhost
上加载。当向该域发送提取请求时,MSW 也在该域上侦听,一切正常,已收到 cookie。
但是,当尝试向另一个域发送请求时,例如 http://localhost:4444
,没有 cookie 被发送到 MSW。奇怪的是,如果我注释掉 MSW 并在同一个端口上启动一个快速服务器,它确实会收到所有的 cookie。为什么他们被发送到快递服务器而不是 MSW?
最后,同样奇怪的是,如果MSW和express服务器都是运行,MSW在4444,Express在5555,express服务器将不再接收cookies。就好像 MSW 的 beforeAll(() => server.listen());
以某种方式杀死了跨域 cookie。
Cookie 设置:
setCookie("local00=L00", "http://localhost");
setCookie("local44=L44", "http://localhost:4444");
setCookie("local55=L55", "http://localhost:5555");
setCookie("local66=L66", "http://localhost:6666");
fetch(http://localhost) --> handler("http://localhost"): OK! all cookies received
fetch(http://localhost:4444) --> handler("http://localhost:4444): No cookies received
OR
--> express("http://localhost:4444): OK! all cookies received
fetch(http://localhost:4444) --> handler("http://localhost:5555): No cookies received
AND
--> express("http://localhost:4444): No cookies received
如何向 MSW 发送跨源请求并让它接收 cookie?
MSW 当前在 JSDOM 中 运行 时不支持 window.fetch
上的 credentials
选项(参见 related issue, and the pull request that adds that support)。期待在下一个次要版本中添加此功能。谢谢