为什么HTML SCRIPT标记不受同一原始策略的约束

时间:2012-05-10 08:52:01

标签: javascript cross-domain standards

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

是否有人可以了解SCRIPT标记允许跨域请求的原因是什么?

2 个答案:

答案 0 :(得分:4)

我认为this draft标题为“同源政策的原则”解释了(虽然简要说明)每个人的头脑中都有什么:

  

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

     

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

简而言之:如果一切都受到SOP的影响,那么构建Web将会困难得多。

答案 1 :(得分:0)

原因在于遗产。它是多年前以这种方式构建的,如果它现在发生变化,太多的网站将会失败。此外,安全隐患是众所周知的,因为它已经存在了很长时间。