1

我们有几个内部网络应用程序。其中之一需要访问所有其他应用程序。问题是:Same-Orign-Policy

实际上我确实设法绕过它。首先,IE 在网络安全方面相当草率。所以,它实际上问我是否要完成这些请求。如果我点击是,他只是执行了跨站点请求。

但由于大多数用户不会使用 IE,因此需要使其在另一个浏览器中运行。所以,我试图让它在谷歌浏览器中运行。经过一番研究,我发现,当我使用执行参数打开网络安全时,它会起作用--disable-web-security。这完成了工作。但不幸的是,大多数用户不会使用这个执行参数。因此我需要另一种解决方案。

然后我遇到了CORS。CORS 似乎是在 Chrome 中实现的,但它有一个缺点(对我来说)。我需要在服务器端设置标题。由于我不会在这里讨论的原因,这是不行的。

所以我真正想知道的是:

为什么禁用浏览器的网络安全可以完成这项工作,而我需要服务器在使用 CORS 时允许请求?

  1. 当我禁用网络安全时,浏览器内部究竟会发生什么?

  2. 还有另一种方法来执行我的 CSR,而无需在服务器端添加标头或禁用安全性?

提前致谢

编辑: JSONP 也不成问题

4

2 回答 2

2

为什么禁用浏览器的网络安全可以完成这项工作,而我需要服务器在使用 CORS 时允许请求?

同源策略的目的是防止 Mallory 的邪恶站点让 Alice 的浏览器访问 Bob 的站点并将 Alice 的数据暴露给 Mallory。

禁用浏览器中的安全性实际上是在说“我不在乎保护我在 Bob(或任何其他!)站点上的数据”。如果浏览器要靠近开放的网络,这是一件危险的事情。提供该选项是为了让开发更方便——我更喜欢可控性更强的解决方案(例如 Charles 代理中的 URL 重写选项)。

CORS 是 Bob 的网站,上面写着“此 URL 不包含任何 Mallory(或其他特定网站或每个人)不应访问的数据,因此他们可以访问它。Bob 的网站可以这样做,因为它知道哪些部分它包含公共数据,哪些部分包含私有数据。

当我禁用网络安全时,浏览器内部究竟会发生什么?

它禁用了上述安全功能并减少了对用户数据的保护。

还有另一种方法来执行我的 CSR,而无需在服务器端添加标头或禁用安全性?

一个代理。请参阅绕过同源策略的方法,特别是反向代理方法

于 2013-02-28T15:23:22.230 回答
1

我猜您正在使用 AJAX 请求,这是另一个问题Ways to Avoid the same-origin policy that has a big detail answer。

可以使用 Flash 对象(flash 没有这个问题)

还有关于“可能发生的最坏情况” http://blogs.msdn.com/b/ieinternals/archive/2009/08/28/explaining-same-origin-policy-part-1-deny-read.aspxhttp ://en.wikipedia.org/wiki/Cross-site_scripting

于 2013-02-28T15:18:00.613 回答