1

我有一个带有 Jest + MSW 的复制仓库,我正在尝试让 MSW 接收跨域 cookie。默认情况下,JSDOM 加载在http://localhost. 当向这个域发送获取请求并且 MSW 也在这个域上监听时,一切都很好,cookie 被接收到。

但是,当尝试向另一个域发送请求时,例如http://localhost:4444,不会向 MSW 发送任何 cookie。奇怪的是,如果我注释掉 MSW 并在同一个端口上启动一个快速服务器,它确实会收到所有的 cookie。为什么它们被发送到快递服务器而不是MSW?

最后,同样奇怪的是,如果 MSW 和 express 服务器都在运行,MSW 在 4444 上,Express 在 5555 上,express 服务器将不再接收 cookie。就好像 MSWbeforeAll(() => server.listen());正在以某种方式杀死跨域 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?

4

1 回答 1

1

MSW 目前不支持在 JSDOM 中运行时的credentials选项(请参阅相关问题添加该支持的拉取请求)。期望在下一个次要版本中添加此功能。谢谢。window.fetch

于 2021-11-07T00:55:31.147 回答