【发布时间】:2023-03-12 21:41:01
【问题描述】:
我问这个问题是因为我们将开发一个应该通过 javascript 共享跨源数据的应用程序。一种可能的解决方案似乎是 JSONP,因为它使用 SCRIPT 标签从其他域中提取数据。但是,我想避免我们在假设 SCRIPT 标签不受 sop 约束并且在某些时候浏览器禁止此功能的情况下实现我们很棒的代码的情况。
谁能解释一下 SCRIPT 标签允许跨域请求的原因是什么?
【问题讨论】:
-
与
标签不受其约束的原因相同。
-
这个原因是什么以及它如何应用于(可执行)脚本?
-
同源策略在某种程度上实际上是为什么脚本标签到其他域是安全的。您不会完全不小心在标记中包含脚本标记(希望无论如何都不会),但是如果您不控制它,则无法保证包含的代码的安全性。您可能希望包含一些 JS,以便在您的页面上展示广告,但您不希望该广告网站访问您用户的会话 cookie。
-
@mosch 像这样看...它们以与图像、样式等相同的方式受到 SOP 的约束,因为您无法获取实际数据本身。就像您无法获取跨域样式表的文本内容或带有画布的跨域图像的像素一样,您也无法获取跨域脚本的实际文本内容。在这方面,它遵循相同的规则。但是,是的,包括来自不受信任的第三方的脚本是粗略的。
-
这是一个有趣的讨论。通过阅读 wikipedia 上的 JSONP,我了解到 Cross-origin resource sharing 作为 JSONP 的现代替代方案。它可以解决您对未来验证您的开发的担忧。
标签: javascript cross-domain standards