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)
我自己想通了:
您必须将"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/