<script> 标签是不是受到与 javascript/fetch 调用相同的 CORS 限制?

Posted

技术标签:

【中文标题】<script> 标签是不是受到与 javascript/fetch 调用相同的 CORS 限制?【英文标题】:Are <script> tags subject to the same CORS restrictions as javascript/fetch calls?<script> 标签是否受到与 javascript/fetch 调用相同的 CORS 限制? 【发布时间】:2020-12-04 19:38:17 【问题描述】:

通常的做法是使用脚本标签包含来自其他来源的脚本,但是当您在其他来源上使用 fetch 调用时,必须仔细配置所有内容,否则您将收到 CORS 错误。

脚本标签是否以某种方式绕过 CORS?它是如何工作的?

【问题讨论】:

您是在问为什么允许从其他来源加载脚本,还是建议远程脚本会尝试从其站点获取其他数据? @Barmar 第一个。 【参考方案1】:

同源策略防止 javascript 在未经许可(通常由 CORS 提供)的情况下读取其他来源的数据

同源策略不会阻止从其他源运行 JavaScript(也不会阻止加载样式表、显示图像、iframe 中的内容等)。

页面中的 JavaScript 不能(通常)首先通过这些方法从其他来源读取敏感数据。

【讨论】:

除非它们位于可以字符串化的全局函数中,但我想这取决于开发人员 好的,但是在 http 级别,会发生什么?通过 javascript 进行跨源提取,它被拒绝。但是当浏览器通过脚本标签来做的时候,就没事了? @bluejayke — 因此“通常”。 @Thomas — 是的。同源策略不适用,因此浏览器不会检查或添加 CORS 标头。

以上是关于<script> 标签是不是受到与 javascript/fetch 调用相同的 CORS 限制?的主要内容,如果未能解决你的问题,请参考以下文章

动态插入的 <script> 标签是不是有效?

javascript 函数在函数所在的script标签下为啥不能被调用

您是不是需要在 <script> 标签中指定文本/javascript?

元素的显示与隐藏

如何在 HTML 标记中排序 <script> 标签与 <style> 标签以获得最佳效果

通过 <script> 标签加载到网页中的 JavaScript 文件的源代码是不是可以被该页面中的其他 JavaScript 读取?