31

我问这个问题是因为我们将开发一个应该通过 javascript 共享跨源数据的应用程序。一种可能的解决方案似乎是 JSONP,因为它使用 SCRIPT 标签从其他域中提取数据。但是,我想避免我们在假设 SCRIPT 标签不受 sop 约束并且在某些时候浏览器禁止此功能的情况下实现我们很棒的代码的情况。

任何人都可以阐明 SCRIPT 标签允许跨域请求的原因是什么?

4

2 回答 2

8

我想这份题为“同源政策原则”的草案解释了(尽管很简短)每个人的想法:

原则上,用户代理可以将每个 URL 视为一个单独的主体,并将每个文档与每个其他 URL 隔离,除非文档明确表明它信任该 URL。不幸的是,这种设计对开发人员来说很麻烦,因为 Web 应用程序通常由许多协同作用的资源组成。

作为近似,用户代理将 URL 组合到称为源的保护域中。特别是,如果两个 URL 具有相同的方案、主机和端口,则它们属于同一来源(即,代表相同的主体)。

简而言之:如果一切都受制于 SOP,那么构建 Web 将会更加困难。

于 2012-05-10T09:01:11.147 回答
2

原因是因为遗产。它是多年前建立的,如果现在改变,太多的网站将会失败。加上安全隐患是众所周知的,因为它已经存在了很长时间。

于 2012-05-10T11:35:49.547 回答