Can I disable SOP (Same Origin Policy) on any browser for development?

白昼怎懂夜的黑 提交于 2019-12-17 04:54:12

问题


I want to develop JavaScript on my Windows machine. Do you know a browser where I can turn off Same Origin Policy so I can develop locally? Firefox would be optimal.

Or if you know a proxy I could use for a SOAP/WSDL site it would be great too.

I am trying to work with the JavaSCript SOAP Client.


回答1:


UPDATE 6/2012: This used to work at the time of the writing, but obviously no more. Sorry.

In Firefox (might apply to other Gecko-based browsers as well) you can use the following JavaScript snippet to allow cross-domain calls:

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

It looks like there's an issue created in the Chromium issue tracker for achieving the same functionality, so you could try starting Chrome with the argument --disable-web-security. I don't know which builds this works on exactly, but at least Nokia's WRT Tools comes with a Chrome installation that does in fact allow loading content from other sites.




回答2:


Unfortunately, using the following:

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

has been disabled in Firefox 5.

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




回答3:


Make a page on your local server that calls the remote server and answer the same as the remote server.

Example, javascript calls local server for a JSON. The local server makes the call to the remote server for that JSON. The local server receives the JSON from the remote server and send it to the javascript.




回答4:


Using the Chromium 13.07, you can start it with security disabled:

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

That's on Ubuntu 11, but change the location as your system.




回答5:


All of the given answers are good ones when it comes to getting around the same origin policy in production.

For development, there is no convenient way to "disable" this security check. There are workarounds (see other answers) or hacks (you could use Greasemonkey to wrap up the JavaScript and use their GM_xmlhttprequest as a temporary measure), but no way to actually "turn it off" as you describe.




回答6:


i run this command on mac, it works on me when i use google chrome to run my project.

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



回答7:


I have no real experience with this, but FireFox 3.5 allows Cross-Site JS according to the W3C Cross-Origin Resource Sharing Draft.

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




回答8:


Firefox would be optimal.

If you can live with Internet Explorer, you may be able to use an .hta application

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

(This is one of the ways the Selenium test automation tool deals with the issue)




回答9:


In Chrome (& Chromium) 48 and above you should add the flag --user-data-dir like this:

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

And it works.




回答10:


You can also redirect a local port to the remote server and port via ssh.



来源:https://stackoverflow.com/questions/330427/can-i-disable-sop-same-origin-policy-on-any-browser-for-development

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!