javascript - react - use the dom to find and display the document's title




Отключить такую же политику происхождения в Chrome (18)

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

Это строго для развития, а не для производства.


Ага. Для 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. Стабильность и безопасность пострадают.

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


В Linux-Ubuntu для одновременного запуска обычного сеанса и небезопасного сеанса выполните следующую команду:

google-chrome  --user-data-dir=/tmp --disable-web-security

Вы можете использовать этот chrome-плагин под названием «Allow-Control-Allow-Origin: *» ... Это делает его простым и работает очень хорошо. проверьте его здесь: *


Вы можете просто использовать это расширение chrome Allow-Control-Allow-Origin

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


Для Selenium Webdriver вы можете запустить селен в Chrome с соответствующими аргументами (или «переключателями») в этом случае.

 @driver = Selenium::WebDriver.for(:Chrome, { 
       :detach => false,
       :switches => ["--disable-web-security"]
    })

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

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

(Измените «C: .... \ chrome.exe» там, где когда-либо находился ваш хром).

и вуаля :)


Для пользователей Windows с Chrome Version 60.0.3112.78 . Вам не нужно закрывать какой-либо экземпляр хрома.

  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-безопасность не поддерживается!

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


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


Закройте chrome (или chromium) и перезапустите с помощью аргумента --disable-web-security . Я просто проверил это и подтвердил, что я могу получить доступ к содержимому iframe с помощью src = "http://google.com", встроенного в страницу, обслуживаемую с "localhost" (протестирован под хром 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

Кажется, что ни одно из вышеперечисленных решений на самом деле не работает. В последних версиях chrome функция -disable-web-security больше не поддерживается.

Allow-Control-Allow-Origin: * - расширение chrome частично разрешило проблему. Он работает только в том случае, если ваш запрос использует метод GET и нет настраиваемого заголовка HTTP. В противном случае хром отправит запрос OPTIONS HTTP в качестве предполетного запроса. Если сервер не поддерживает CORS, он ответит 404 кодом статуса HTTP. Плагин не может изменить код ответа HTTP-ответа. Поэтому хром отклонит этот запрос. Для 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 без https на странице https.
  • Мне нужно запустить на nodejs. Я не хочу поддерживать другой языковой пакет.

Поэтому я решил разработать собственную версию corsproxy с nodejs. На самом деле это очень просто. Я опубликовал его как суть в github. Вот суть исходного кода: https://gist.github.com/jianwu/8e76eaec95d9b1300c59596fbfc21b10

  • Он находится в коде plain nodejs без каких-либо дополнительных зависимостей
  • Вы можете работать в режиме http и https (передавая номер порта https в командной строке), для запуска https вам нужно сгенерировать cert и ключ и поместить каталог webroot.
  • Он также служит статическим файловым сервером
  • Он также поддерживает предполетный запрос OPTION.

Попробуйте эту команду на терминале Mac-

open -n -a "Google Chrome" --args --user-data-dir=/tmp/temp_chrome_user_data_dir http://localhost:8100/ --disable-web-security 

Он открывает еще один экземпляр хрома с отключенной безопасностью и больше нет проблемы с CORS. Кроме того, вам больше не нужно закрывать другие экземпляры chrome. Измените URL-адрес локального хоста на свой.


Следуя за ответом Ола Карлссон, действительно лучшим способом было бы открыть небезопасный 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


Я иногда использую это для размещения локального сайта localhost в локальном back-end API (например, React to old .NET API). Я создал отдельный ярлык на рабочем столе Windows 10, так что он никогда не используется для обычного просмотра, только для отладки локально. Я сделал следующее: -

  1. Щелкните правой кнопкой мыши на рабочем столе, добавьте новый ярлык
  2. Добавьте цель как "[PATH_TO_CHROME]\chrome.exe" --disable-web-security
  3. Нажмите «ОК».

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

Надеюсь это поможет!


Я считаю, что лучший способ сделать это - дублировать ярлык Chrome или Chrome Canary на рабочем столе Windows. Переименуйте этот ярлык в «NO CORS», затем отредактируйте свойства этого ярлыка.

в целевой add --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"


для пользователей Mac:

open -a "Google Chrome" --args --disable-web-security --user-data-dir

и до Chrome 48 вы можете просто использовать:

open -a "Google Chrome" --args --disable-web-security

ТОЛЬКО ДЛЯ ПОЛЬЗОВАТЕЛЯ MAC

open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/someFolderName" --disable-web-security

chromium-browser --disable-web-security --user-data-dir=~/ChromeUserData/




google-chrome