Могу ли я отключить SOP (Same Origin Policy) в любом браузере для разработки?
Я хочу разработать JavaScript на своей машине Windows. Знаете ли вы браузер, в котором я могу отключить политику одинакового происхождения, чтобы я мог развиваться локально? Firefox будет оптимальным.
Или, если вы знаете прокси-сервер, который я мог бы использовать для SOAP/WSDL-сайта, это было бы здорово.
Я пытаюсь работать с JavaSCript SOAP Client.
Ответы
Ответ 1
ОБНОВЛЕНИЕ 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, которая фактически позволяет загружать контент из другие сайты.
Ответ 2
К сожалению, используя следующее:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
отключен в Firefox 5.
https://bugzilla.mozilla.org/show_bug.cgi?id=667312
Ответ 3
Сделайте страницу на своем локальном сервере, которая вызывает удаленный сервер, и ответьте так же, как на удаленном сервере.
Например, javascript вызывает локальный сервер для JSON. Локальный сервер делает вызов на удаленном сервере для этого JSON. Локальный сервер получает JSON с удаленного сервера и отправляет его в javascript.
Ответ 4
Используя Chromium 13.07, вы можете запустить его с отключенной безопасностью:
/usr/bin/chromium-browser --disable-web-security
Это на Ubuntu 11, но измените местоположение как вашу систему.
Ответ 5
Все приведенные ответы являются хорошими, когда речь заходит о том, чтобы обойти одну и ту же политику происхождения в производстве.
Для разработки нет удобного способа "отключить" эту проверку безопасности. Возможны обходные пути (см. Другие ответы) или хаки (вы можете использовать Greasemonkey для завершения JavaScript и использовать их GM_xmlhttprequest в качестве временной меры), но не можете фактически "отключить", как вы описали.
Ответ 6
Firefox будет оптимальным.
Если вы можете жить с Internet Explorer, вы можете использовать .hta-приложение
http://msdn.microsoft.com/en-us/library/ms536496(VS.85).aspx
(Это один из способов, с помощью которого инструмент автоматизации тестирования Selenium справляется с проблемой)
Ответ 7
У меня нет реального опыта в этом, но FireFox 3.5 позволяет Cross-Site JS в соответствии с W3C Cross-Origin Resource Sharing Draft.
Смотрите: https://developer.mozilla.org/En/HTTP_access_control
Ответ 8
В Chrome (& Chromium) 48 и выше вы должны добавить флаг --user-data-dir
следующим образом:
chromium-browser --disable-web-security --user-data-dir
И он работает.
Ответ 9
Вы также можете перенаправить локальный порт на удаленный сервер и порт через ssh.