我可以在任何浏览器上禁用 SOP(同源策略)进行开发吗?

Posted

技术标签:

【中文标题】我可以在任何浏览器上禁用 SOP(同源策略)进行开发吗?【英文标题】:Can I disable SOP (Same Origin Policy) on any browser for development? 【发布时间】:2010-09-24 17:33:06 【问题描述】:

我想在我的 Windows 机器上开发 javascript。你知道我可以关闭 Same Origin Policy 以便我可以在本地开发的浏览器吗? Firefox 将是最佳选择。

或者,如果您知道我可以将其用于 SOAP/WSDL 站点的代理,那就太好了。

我正在尝试使用JavaSCript SOAP Client。

【问题讨论】:

我在开发 MySpace 应用程序时也有同样的愿望。 【参考方案1】:

更新 6/2012:这在撰写本文时曾经有效,但显然不再有效。抱歉。

在 Firefox(可能也适用于其他基于 Gecko 的浏览器)中,您可以使用以下 JavaScript sn-p 来允许跨域调用:

if (navigator.userAgent.indexOf("Firefox") != -1) 
    try 
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
     
    catch (e) 
        alert("Permission UniversalBrowserRead denied -- not running Mozilla?");
    

看起来在 Chromium 问题跟踪器中创建了 an issue 以实现相同的功能,因此您可以尝试使用参数 --disable-web-security 启动 Chrome。我不知道它到底是在哪个构建上运行的,但至少诺基亚的WRT Tools 带有一个 Chrome 安装,实际上允许从其他站点加载内容。

【讨论】:

这确实是测试代码的方法。弹出一个警告,然后 Just Works。非常感谢! 作为记录,这几乎是开发中等效的 Chrome/Chromium 启动参数字符串:"--allow-file-access-from-files --disable-web-security --enable-文件-cookies --disk-cache-size=1 --media-cache-size=1"【参考方案2】:

不幸的是,使用以下内容:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

已在 Firefox 5 中禁用。

https://bugzilla.mozilla.org/show_bug.cgi?id=667312

【讨论】:

我想在这里指出一个明显的事情。如果 Firefox 5 不允许我这样做并且我真的需要这样做,我将使用 Firefox 4 来代替。不是世界末日。【参考方案3】:

在本地服务器上创建一个页面,调用远程服务器并与远程服务器一样回答。

例如,javascript 为 JSON 调用本地服务器。本地服务器为该 JSON 调用远程服务器。本地服务器从远程服务器接收 JSON 并将其发送到 javascript。

【讨论】:

【参考方案4】:

使用 Chromium 13.07,您可以在禁用安全性的情况下启动它:

/usr/bin/chromium-browser --disable-web-security

这是在 Ubuntu 11 上,但将位置更改为您的系统。

【讨论】:

/opt/google/chrome/google-chrome --disable-web-security 在 Linux Mint 11.04、Google Chrome 14.0.8 上对我有用【参考方案5】:

对于在生产中绕过同源政策,所有给出的答案都是很好的答案。

对于开发,没有方便的方法来“禁用”此安全检查。有解决方法(请参阅其他答案)或 hacks(您可以使用 Greasemonkey 来包装 JavaScript 并使用他们的 GM_xmlhttprequest 作为临时措施),但没有办法像您描述的那样真正“关闭它”。

【讨论】:

【参考方案6】:

我在 mac 上运行此命令,当我使用 google chrome 运行我的项目时它对我有效。

open -a Google\ Chrome --args --disable-web-security --user-data-dir

【讨论】:

【参考方案7】:

我没有这方面的实际经验,但是根据W3C Cross-Origin Resource Sharing Draft,FireFox 3.5 允许跨站点 JS。

见:https://developer.mozilla.org/En/HTTP_access_control

【讨论】:

但 Web 服务器必须通过发送 HTTP 响应标头来启用 CORS:例如 Access-Control-Allow-Origin: *【参考方案8】:

Firefox 将是最佳选择。

如果您可以使用 Internet Explorer,则可以使用 .hta 应用程序

http://msdn.microsoft.com/en-us/library/ms536496(VS.85).aspx

(这是 Selenium 测试自动化工具处理问题的方式之一)

【讨论】:

【参考方案9】:

在 Chrome (& Chromium) 48 及更高版本中,您应该像这样添加标志--user-data-dir

chromium-browser --disable-web-security --user-data-dir

而且它有效。

【讨论】:

【参考方案10】:

您还可以通过 ssh 将本地端口重定向到远程服务器和端口。

【讨论】:

以上是关于我可以在任何浏览器上禁用 SOP(同源策略)进行开发吗?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器SOP

xss利用——BeEF#stage3(绕过同源策略与浏览器代理)

VMWare Player 同源策略模拟环境

通过浏览器缓存bypass同源策略(SOP)

同源策略和CORS(跨域资源共享)

在 Android Chrome 上禁用同源策略