it-roy-ru.com

Можно отключить SOP (Та же политика происхождения) в любом браузере для разработки?

Я хочу разработать JavaScript на моей машине с Windows. Знаете ли вы браузер, в котором я могу отключить Same Origin Policy, чтобы я мог разрабатывать локально? Firefox будет оптимальным.

Или, если вы знаете прокси-сервер, который я мог бы использовать для сайта SOAP/WSDL, это тоже было бы здорово.

Я пытаюсь работать с клиентом JavaSCript SOAP .

32
Thomaschaaf

ОБНОВЛЕНИЕ 6/2012: Раньше это работало во время написания, но, очевидно, не более. Сожалею.

В Firefox (может применяться и к другим браузерам на основе Gecko) вы можете использовать следующий фрагмент JavaScript для разрешения междоменных вызовов:

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

Похоже, что проблема создана в трекере проблем Chromium для достижения той же функциональности, поэтому вы можете попробовать запустить Chrome с аргументом --disable-web-security. Я не знаю, на каких именно сборках это работает, но, по крайней мере, Nokia WRT Tools поставляется с установкой Chrome, которая фактически позволяет загружать контент с других сайтов.

15
miek

К сожалению, используя следующее:

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

был отключен в Firefox 5.

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

6
user828878

Используя Chromium 13.07, вы можете запустить его с отключенной защитой:

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

Это на Ubuntu 11, но измените местоположение в качестве вашей системы.

2
Chris Lee

Создайте на своем локальном сервере страницу, которая вызывает удаленный сервер и отвечает так же, как удаленный сервер.

Например, javascript вызывает локальный сервер для JSON. Локальный сервер выполняет вызов удаленного сервера для этого JSON. Локальный сервер получает JSON от удаленного сервера и отправляет его в javascript.

2
dsimard

Все приведенные ответы являются хорошими, когда речь идет об обходе одной и той же политики происхождения в производстве.

Для разработки нет удобного способа «отключить» эту проверку безопасности. Существуют обходные пути (см. Другие ответы) или хаки (вы можете использовать Greasemonkey, чтобы обернуть JavaScript и использовать их GM_xmlhttprequest в качестве временной меры), но нет способа «отключить» его, как вы описываете.

1
singpolyma

В Chrome (и Chromium) 48 и выше вы должны добавить флаг --user-data-dir так:

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

И это работает.

0
Johann Echavarria

У меня нет реального опыта в этом, но FireFox 3.5 позволяет использовать межсайтовый JS в соответствии с W3C Cross-Origin Resource Sharing Draft .

Смотрите: https://developer.mozilla.org/En/HTTP_access_control

0
wilth

Firefox будет оптимальным.

Если вы можете жить с Internet Explorer, вы можете использовать приложение .hta

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

(Это один из способов, которым средство автоматизации тестирования Selenium решает эту проблему)

0
The Archetypal Paul