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

て烟熏妆下的殇ゞ 提交于 2019-11-26 19:53:24

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.

user828878

Unfortunately, using the following:

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

has been disabled in Firefox 5.

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

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.

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.

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.

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

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

The Archetypal Paul

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)

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.

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

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