Отключить ту же политику происхождения в Chrome
Есть ли способ отключить политику одного и того же происхождения в браузере Google Chrome?
Это строго для развития, а не для производственного использования.
40 ответов
Закройте хром (или хром) и перезапустите с помощью --disable-web-security
аргумент. Я только что проверил это и подтвердил, что могу получить доступ к содержимому iframe с помощью встроенной в страницу src="http://google.com" страницы "localhost" (протестировано в chromium 5 / ubuntu). Для меня точная команда была:
Примечание. Убейте все экземпляры Chrome перед запуском команды.
chromium-browser --disable-web-security --user-data-dir="[some directory here]"
Браузер предупредит вас, что "вы используете неподдерживаемую командную строку" при первом ее открытии, что вы можете игнорировать.
Из источника хрома:
// Don't enforce the same-origin policy. (Used by people testing their sites.)
const wchar_t kDisableWebSecurity[] = L"disable-web-security";
До Chrome 48 вы могли просто использовать:
chromium-browser --disable-web-security
Ага. Для OSX откройте терминал и запустите:
$ open -a Google\ Chrome --args --disable-web-security --user-data-dir
- Требуется -user-data-dir на Chrome 49+ на OSX
Для Linux запустите:
$ google-chrome --disable-web-security
Также, если вы пытаетесь получить доступ к локальным файлам для целей разработки, таких как AJAX или JSON, вы также можете использовать этот флаг.
-–allow-file-access-from-files
Для Windows перейдите в командную строку и перейдите в папку, где находится Chrome.exe, и введите
chrome.exe --disable-web-security
Это должно отключить ту же политику происхождения и разрешить доступ к локальным файлам.
Обновление: для Chrome 22+ вам будет показано сообщение об ошибке:
Вы используете неподдерживаемый флаг командной строки: --disable-web-security. Стабильность и безопасность пострадают.
Однако вы можете просто игнорировать это сообщение при разработке.
Для пользователей Windows:
Проблема с решением, принятым здесь, на мой взгляд, заключается в том, что если у вас уже открыт Chrome и вы пытаетесь запустить его, он не будет работать.
Однако, исследуя это, я наткнулся на сообщение о супер-пользователе, возможно ли запускать Chrome одновременно и без веб-безопасности?,
По сути, запустив следующую команду (или создав с ней ярлык и открыв Chrome через него)
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
Вы можете открыть новый "небезопасный" экземпляр Chrome одновременно с тем, чтобы другие "защищенные" экземпляры браузера оставались открытыми и работали в обычном режиме. Важно: удалить / очистить C:/Chrome dev session
папка каждый раз, когда вы открываете окно во второй раз --disable-web-security
не собирается работать. Таким образом, вы не можете сохранить изменения, а затем снова открыть их как второй небезопасный экземпляр Chrome с --disable-web-security
,
Для Windows:
- Откройте меню "Пуск"
- Наберите windows+R или откройте "Выполнить"
Выполните следующую команду:
chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
Для Mac:
- Перейти к терминалу
Выполните следующую команду:
open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security
Новый браузер Chrome с отключенной веб-безопасностью должен открыться со следующим сообщением:
Используя текущие последние версии Chrome (73.0.3683.86), единственный способ заставить его работать в моем тесте - запустить Chrome с помощью следующих флагов (измените D:\temp по своему вкусу):
--disable-site-изоляция-испытания --disable-web-security --user-data-dir="D:\temp"
в окнах нажмите кнопку Пуск, затем скопируйте и вставьте ниже:
chrome.exe --disable-site-isolation-trials --disable-web-security --user-data-dir="D:\temp"
Для пользователей Windows с Chrome версии 60.0.3112.78. Вам не нужно закрывать любой экземпляр Chrome.
- Создать ярлык на рабочем столе
- Нажмите правой кнопкой мыши на ярлык и выберите Свойства
- Изменить свойство Target
- Установите для него "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
- Запустите Chrome и проигнорируйте сообщение о том, что --disable-web-security не поддерживается!
ВНИМАНИЕ! НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ОСОБЫЙ ИНСТРУМЕНТ БРАУЗЕРА ДЛЯ ПРОСМОТРА, ПОТОМУ ЧТО ВЫ МОЖЕТЕ ПОЛУЧИТЬ ЕГО!
Я не хотел перезапускать Chrome и отключать мою веб-безопасность (потому что я просматривал во время разработки) и наткнулся на это расширение Chrome.
Интернет-магазин Chrome Allow-Control-Allow-Origin: *
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en
По сути, это небольшой тумблер для включения и выключения проверки Allow-Access-Origin-Control. У меня отлично работает то, что я делаю.
РЕДАКТИРОВАТЬ: я пытался использовать только на днях для другого проекта, и он перестал работать. Деинсталляция и переустановка расширения исправили его (для сброса настроек по умолчанию).
Попробуйте эту команду на Mac-терминале
open -n -a "Google Chrome" --args --user-data-dir=/tmp/temp_chrome_user_data_dir http://localhost:8100/ --disable-web-security
Он открывает еще один экземпляр Chrome с отключенной защитой, и больше нет проблем с CORS. Кроме того, вам больше не нужно закрывать другие экземпляры Chrome. Измените локальный URL-адрес на свой.
Кажется, что ни одно из вышеперечисленных решений на самом деле не работает. --Disable-web-security больше не поддерживается в последних версиях Chrome.
Allow-Control-Allow-Origin: * - расширение chrome частично решило проблему. Он работает только в том случае, если ваш запрос использует метод GET, а пользовательский заголовок HTTP отсутствует. В противном случае Chrome отправит HTTP-запрос OPTIONS в качестве запроса перед полетом. Если сервер не поддерживает CORS, он ответит кодом состояния 404 HTTP. Плагин не может изменить HTTP-код ответа. Таким образом, Chrome отклонит этот запрос. Плагин Chrome не может изменить HTTP-код ответа на основе текущего API расширения Chrome. И вы не можете сделать перенаправление также для инициированного XHR запроса.
Не уверен, почему Chrome делает жизнь разработчиков настолько сложной. Он блокирует все возможные способы отключения проверки безопасности XSS даже для использования в разработке, что совершенно не нужно.
После нескольких дней борьбы и исследований, одно решение отлично работает для меня: использовать corsproxy. У вас есть два варианта: 1. использовать corsproxy.com 2. установить corsproxy в локальном окне: npm install -g corsproxy
[Обновлено 23 июня 2018 г.] Недавно я занимаюсь разработкой приложения SPA, в котором нужно снова использовать corsproxy. Но, похоже, ни один из corsproxy на github не может удовлетворить мое требование.
- нужно для запуска внутри брандмауэра по соображениям безопасности. Поэтому я не могу использовать https://cors-anywhere.herokuapp.com/.
- Он должен поддерживать https, поскольку chrome блокирует ajax-запрос no-https на странице https.
- Мне нужно работать на nodejs. Я не хочу поддерживать другой языковой стек.
Поэтому я решил разработать свою собственную версию corsproxy с помощью nodejs. Это на самом деле очень просто. Я опубликовал это как GIST на GitHub. Вот суть исходного кода: https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10
- Это в простом коде nodejs без каких-либо дополнительных зависимостей
- Вы можете работать в режимах http и https (передавая номер порта https в командной строке), чтобы запустить https, вам нужно сгенерировать сертификат и ключ и поместить каталог webroot.
- Он также служит статическим файловым сервером.
- Он также поддерживает запрос перед полетом.
Я считаю, что лучший способ сделать это - скопировать ярлык Chrome или Chrome Canary на рабочий стол Windows. Переименуйте этот ярлык в "NO CORS", затем отредактируйте свойства этого ярлыка.
в целевой добавить --disable-web-security --user-data-dir="D:/Chrome"
до конца целевого пути.
Ваша цель должна выглядеть примерно так:
Обновление: добавлены новые флаги.
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="D:/Chrome"
Для Windows... создайте ярлык Chrome на рабочем столе.
Щелкните правой кнопкой мыши> Свойства> Ярлык
Отредактируйте "целевой" путь:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security
(Измените "C:....\chrome.exe" на то место, где находится ваш chrome).
и вуаля:)
- Создайте новый ярлык:
- Вставьте следующий путь:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="c:\temp\chrome"
- Назовите это:
Unsafe Chrome.exe
Теперь у вас есть небезопасная версия Google Chrome на рабочем столе, чтобы использовать ее для отладки интерфейсных приложений без каких-либо проблем с CORS.
Для OSX выполните следующую команду из терминала:
open -na Google\ Chrome --args --disable-web-security --user-data-dir=$HOME/profile-folder-name
Это запустит новый экземпляр Google Chrome с предупреждением вверху.
Не делай этого! Вы открываете свои счета для атак. После этого любой сторонний сайт может начать отправлять запросы на другие сайты, на которые вы вошли.
Вместо этого запустите локальный сервер. Это так же просто, как открыть оболочку / терминал / командную строку и набрать
cd path/to/files
python -m SimpleHTTPServer
Затем укажите ваш браузер на
http://localhost:8000
Если вы обнаружите, что это слишком медленно, рассмотрите это решение.
Вы можете использовать этот плагин Chrome под названием "Allow-Control-Allow-Origin: *" ... Он очень прост и работает очень хорошо. проверьте это здесь: *
Для Selenium Webdriver в этом случае вы можете запустить Chrome селен с соответствующими аргументами (или "переключателями").
@driver = Selenium::WebDriver.for(:Chrome, {
:detach => false,
:switches => ["--disable-web-security"]
})
ТОЛЬКО ДЛЯ ПОЛЬЗОВАТЕЛЯ MAC
open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security
Вы можете просто использовать это расширение Chrome Allow-Control-Allow-Origin
просто нажмите на значок extensnion, чтобы включить или выключить кросс-ресурсный доступ, как вы хотите
Если вы используете Google Chrome в Linux, работает следующая команда.
google-chrome --disable-web-security
Этот плагин Chrome работает для меня: Allow-Control-Allow-Origin: * - Интернет-магазин Chrome
В Linux- Ubuntu, чтобы запустить одновременно обычный сеанс и небезопасный сеанс, выполните следующую команду:
google-chrome --user-data-dir=/tmp --disable-web-security
chromium-browser --disable-web-security --user-data-dir=~/ChromeUserData/
В Windows 10 будет работать следующее.
<<path>>\chrome.exe --allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt
Для пользователей Mac:
open -a "Google Chrome" --args --disable-web-security --user-data-dir
и до Chrome 48 вы могли просто использовать:
open -a "Google Chrome" --args --disable-web-security
Следуя ответу Олы Карлссона, действительно, лучшим способом было бы открыть небезопасный Chrome в другом сеансе. Таким образом, вам не нужно беспокоиться о закрытии всех открытых в данный момент вкладок, а также вы можете продолжать безопасно просматривать веб-страницы с помощью исходного сеанса Chrome.
Эти командные файлы должны работать только на вас в Windows.
Поместите его в файл Chrome_CORS.bat для удобства использования
start "" "c:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="c:/_chrome_dev" --disable-web-security
Это для Chrome Canary. Canary_CORS.bat
start "" "c:\Users\%USERNAME%\AppData\Local\Google\Chrome SxS\Application\chrome.exe" --user-data-dir="c:/_canary_dev" --disable-web-security
Это постоянно движущаяся цель.... сегодня мне нужно было добавить еще один флаг, чтобы заставить его работать:--disable-site-isolation-trials
OS X:open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome_dev_2" --disable-web-security --disable-site-isolation-trials
Существует расширение Chrome, которое называется CORS Toggle.
Нажмите здесь, чтобы получить доступ к нему и добавить его в Chrome.
После добавления переключите его во включенное положение, чтобы разрешить междоменные запросы.
У меня работает только для OSX Catalina приведенная ниже команда.
open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security
Используемая ниже команда в Ubuntu для запуска хрома (отключите ту же политику происхождения и откройте хром в отключенном режиме):
nohup google-chrome --disable-web-security --user-data-dir='/tmp' &
Для Windows:
(используя Windows 8.1, Chrome 44.0)
Сначала закройте Google Chrome.
Затем откройте командную строку и перейдите в папку, где находится "chrome.exe".
( for me: 'chrome.exe' is here "C:\Program Files (x86)\Google\Chrome\Application".
Итак, я набираю: cd C:\Program Files (x86)\Google\Chrome\Application
)
сейчас наберите: chrome.exe --disable-web-security
Откроется новое окно Chrome.