Yuc*_*hou 106 security firefox same-origin-policy
我正在开发一个本地研究工具,要求我关闭Firefox的相同原始策略(在脚本访问方面,我并不真正关心跨域请求).
更具体地说,我希望主机域中的脚本能够访问页面中嵌入的任何iframe中的任意元素,而不管其域名是什么.
我知道之前的Q&As提到了CORS FF扩展,但这不是我需要的,因为它只允许CORS,但不允许脚本访问.
如果它不能轻易完成,我也很感激任何见解,指出我可以修改以禁用SOP的FF src代码的特定部分,以便我可以重新编译FF.
Gia*_*ani 80
有一个Firefox扩展,它将CORS标头添加到2015年3月5日发布的最新Firefox(build 36.0.1)上的任何HTTP响应中.我测试了它,它适用于Windows 7和Mavericks.我将指导您完成工作的步骤.
1)获得扩展
您可以从此处(作者构建)或从此处下载xpi (镜像,可能不会更新).
或者从GitHub 下载文件.现在它也在Firefox Marketplace上:在这里下载.在这种情况下,单击安装后会安装插件,您可以跳到第4步.
如果您下载了xpi,则可以跳到第3步.如果您从GitHub下载了zip,请转到步骤2.
2)构建xpi
你需要提取zip,进入"cors-everywhere-firefox-addon-master"文件夹,选择所有项目并压缩它们.然后,将创建的zip重命名为*.xpi
注意:如果您使用的是OS X gui,它可能会创建一些隐藏文件,因此您最好使用命令行.
3)安装xpi
您可以将xpi拖放到firefox,或者转到:"about:addons",单击右上角的cog并选择"从文件安装添加",然后选择.xpi文件.现在,重启firefox.
4)让它工作
现在,默认情况下,扩展程序不起作用.您需要将扩展程序图标拖到扩展栏,但不要担心.有图片!


5)测试它是否正常工作
jQuery的
$.get( "http://example.com/", function( data ) {
console.log (data);
});
Run Code Online (Sandbox Code Playgroud)
JavaScript的
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
console.log(xmlhttp.responseText);
}
}
xmlhttp.open("GET","http://example.com/");
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)
6)最后的考虑
请注意,不允许https到http.
可能有一种解决方法,但它落后于问题的范围.
Nik*_*las 35
about:config -> security.fileuri.strict_origin_policy -> false
Run Code Online (Sandbox Code Playgroud)
Yuc*_*hou 10
我意识到我的旧答案被低估了,因为我没有具体说明如何禁用FF的相同原始政策.在这里,我将给出一个更详细的答案:
警告:这需要重新编译FF,新编译的Firefox将无法再次启用 SOP.
查看Mozilla的Firefox源代码,在src目录中找到nsScriptSecurityManager.cpp.我将使用此处列出的示例:http: //mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp
转到函数实现nsScriptSecurityManager :: CheckSameOriginURI,这是截至03/02/2016的第568行.
使该函数始终返回NS_OK.
这将禁用SOP.
@Giacomo的浏览器插件答案应该对大多数人有用而且我接受了答案,但是,对于我的个人研究需求(TL;这里不解释)这还不够,我认为其他研究人员可能需要做什么我在这里完全杀死了SOP.
我写了一个附加组件来解决这个问题在Firefox(Chrome,Opera版本即将推出).它适用于最新的Firefox版本,具有漂亮的用户界面和支持JS正则表达式:https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors
cors -everywhere插件对我有用,直到 Firefox 68,68 之后我需要调整 'privacy.file_unique_origin' -> false (通过打开 'about:config') 来解决新 CORS 同源规则的' CORS 请求而不是 HTTP '介绍了。
注意:12/2021 更新。从 Firefox 95 开始,无法通过调整“privacy.file_unique_origin”来禁用“CORS 请求而非 HTTP”。请参阅上面的“CORS 请求不是 HTTP”链接,该链接最近已由官方更新。对我来说唯一的方法是“......需要执行本地测试的开发人员现在应该设置本地服务器。”