导入请求的文件时,Cookie不在标题中

jir*_*ron 3 javascript cookies chromium session-cookies es6-modules

当我使用chrome或firefox在给定的代码示例(ES6导入)中请求我的文件时,我在服务器端获得相应的请求,但与"正常"脚本加载(通过脚本标记与src)相反,cookie不是在标题中提供,是正常的吗?如果是这样的话:如果我有基于cookie的身份验证,我该如何将此请求与会话相关联?

不起作用 - 因为浏览器不会根据请求发送已建立的cookie:

<script type="module">
  import '/index.js';
</script>
Run Code Online (Sandbox Code Playgroud)

Works - 浏览器发送带有请求的cookie:

<script src="/index.js">
</script>
Run Code Online (Sandbox Code Playgroud)

jir*_*ron 9

我自己想通了:

您必须将"crossorigin"属性添加到脚本标记:

<script type="module" crossorigin>
  import '/index.js';
</script>
Run Code Online (Sandbox Code Playgroud)

这是因为即使模块脚本的请求转到同源,es6模块导入也会以某种方式进入CORS.并且CORS不会发送模块脚本请求的凭据....除非你把crossorigin属性.

Jack Archibald的这篇文章给了我很多帮助(自然提到的浏览器问题不再是最新的):

https://jakearchibald.com/2017/es-modules-in-browsers/