关于ES6使用模块化会发生同源策略的原因

使用模块化如下:

script使用type="module",导出外部文件.js的函数使用

结果报错如下:

报错翻译:来自orgin的“null”已被CORS策略(同源策略)阻止:跨源请求只支持协议方案:http,数据,chrome, chrome-extension, https。

原因:

ES6 使用模块的时候要在标签中声明 type="module"而这类使用了模块的 script 是受限于同源策略的,默认会发起cors跨域请求,问题来了,这种请求要求 request header  origin 必须带有 http 等类型,但是 file 协议下,origin 是空的,也就是不符合这个要求,如果在这种情况下依然要发送请求,那就会报错了。

拓展:

①script标签是自带跨域的功能的

②跨域导致的原因是协议、域名、端口号不同就会导致,而这里的协议通常是指http协议,https等协议。也就是说http, data, chrome, chrome-extension, https这些协议是支持跨域请求的,而file协议并不支持。

解决办法:

①通过搭建本地一个服务器去进行资源的问题来解决跨域问题。

②右键vs code---直接用live sever打开,没有的去安装一个叫Live Sever的插件即可。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值