Отключить ту же политику происхождения в Chrome - PullRequest
1341 голосов
/ 23 июня 2010

Есть ли способ отключить политику того же происхождения в браузере Google Chrome ?

Ответы [ 29 ]

1021 голосов
/ 21 мая 2011

Да.Для OSX откройте Terminal и запустите:

$ open -a Google\ Chrome --args --disable-web-security --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.Стабильность и безопасность пострадают.

Однако вы можете просто игнорировать это сообщение при разработке.

915 голосов
/ 05 июля 2010

Закрыть хром (или хром) и перезапустить с аргументом --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
460 голосов
/ 11 октября 2013

Для пользователей 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.

115 голосов
/ 03 февраля 2017

Для Windows :

  1. Открыть меню «Пуск»
  2. Тип windows + R или открыть »Выполнить "
  3. Выполнить следующую команду:

    chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
    

Для Mac :

  1. Перейти к терминалу
  2. Выполнить следующую команду:

    open /Applications/Google\ Chrome.app --args --user-data-dir="/var/tmp/Chrome dev session" --disable-web-security
    

Новый браузер Chrome с отключенной веб-безопасностью должен открыться со следующим сообщением:

enter image description here

72 голосов
/ 20 июня 2014

Я не хотел перезапускать Chrome и отключать мою веб-безопасность (потому что я просматривал во время разработки) и наткнулся на это расширение Chrome.

Интернет-магазин Chrome Allow-Control-Allow-Origin: *
(https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en)

По сути, это небольшой тумблер для включения и выключения проверки Allow-Access-Origin-Control. У меня отлично работает то, что я делаю.

РЕДАКТИРОВАТЬ: Я пытался использовать только на днях для другого проекта, и он перестал работать. Деинсталляция и переустановка расширения исправили его (для сброса настроек по умолчанию).

РЕДАКТИРОВАТЬ 2: я больше не могу заставить это работать последовательно

58 голосов
/ 01 августа 2017

Для windows пользователей с Chrome Версии 60.0.3112.78 (день, когда решение было протестировано и работало) и по крайней мере до сегодняшнего дня 19.01.2019 (версия 71.0.3578.98) .Вам не необходимо закрывать любой экземпляр Chrome.

  1. Создать ярлык на рабочем столе
  2. Щелкните правой кнопкой мыши ярлык и выберите Свойства
  3. Изменить свойство Target
  4. Установить его на "C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe" --disable-web-security --user-data-dir = "C: / ChromeDevSession"
  5. Запустить Chrome и игнорировать сообщение о том, что --disable-web-security не поддерживается!

ВНИМАНИЕ! НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ОСОБЫЙ ИНСТРУМЕНТ БРАУЗЕРА ДЛЯ ПРОСМОТРА, ПОТОМУ ЧТО ВЫ МОЖЕТЕ ПОЛУЧИТЬ ЕГО!

48 голосов
/ 12 января 2015

Кажется, что ни одно из вышеперечисленных решений на самом деле не работает. - 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. использовать [https://cors -anywhere.herokuapp.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.
  • Он также служит статическим файловым сервером.
  • Он также поддерживает предварительный запрос OPTION.

Запуск сервера CORSProxy (http-порт 8080): узелstatic_server.js 8080

для доступа к прокси: http://host:8080/http://www.somesite.com

42 голосов
/ 27 августа 2013

Для Windows ... создайте ярлык Chrome на рабочем столе.
Щелкните правой кнопкой мыши> свойства> Ярлык
Измените целевой путь:

"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-web-security

(Измените 'C:.... \ chrome.exe 'где бы ни находился ваш chrome).

et voilà :)

35 голосов
/ 14 января 2016

Я считаю, что лучший способ сделать это - скопировать ярлык 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"

enter image description here

32 голосов
/ 26 декабря 2017

Попробуйте эту команду на терминале 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-адрес на свой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...