Вопрос или проблема
Раньше всё работало, но с последним обновлением Chrome (версия 81) я не могу войти в свою веб-программу локально.
Ошибка в консоли:
Не удалось загрузить ресурс: net::ERR_CONNECTION_RESET
Fiddler говорит, что это ошибка 504 Receive Failure error
.
Я недавно столкнулся с этой проблемой и обнаружил, что её вызвало расширение “Adblock” (моя лучшая догадка заключается в том, что это произошло из-за наличия слов “banner” и “ad” в названии файла).
Чтобы быстро проверить, является ли это вашей проблемой, запустите Chrome в режиме инкогнито с отключенными расширениями (ctrl+shift+n)
и посмотрите, работает ли теперь ваша страница. Обратите внимание, что по умолчанию все расширения уже будут отключены в режиме инкогнито, если вы специально не настроили их на запуск (через chrome://extensions).
ИЛИ
Для отключения политики того же источника:
Закройте Chrome (или Chromium) и перезапустите с аргументом --disable-web-security
. Я только что проверил это и убедился, что могу получить доступ к содержимому фрейма с src=”http://google.com”, встроенному в страницу, предоставленную с “localhost” (проверено под Chromium 5 / Ubuntu). Для меня точная команда была:
Примечание: завершите все процессы Chrome перед выполнением команды
chromium-browser --disable-web-security --user-data-dir="[some directory here]"
Браузер предупредит вас о том, что “вы используете неподдерживаемую командную строку”, когда он откроется в первый раз, что можно игнорировать.
Из исходного кода Chromium:
// Не применять политику того же источника. (Используется людьми, тестирующими свои сайты.)
const wchar_t kDisableWebSecurity[] = L"disable-web-security";
До Chrome 48 вы могли просто использовать:
chromium-browser --disable-web-security
Ответ или решение
Вопрос о том, как отключить политику того же происхождения (Same Origin Policy) в Chrome версии 81, заслуживает подробного анализа, так как данное действие может иметь серьёзные последствия для безопасности вашего браузера и компьютера. Важно понимать, что политика того же происхождения — это мера безопасности, которую браузеры используют для ограничения взаимодействия скриптов, загруженных из разных источников. Основное её предназначение — предотвратить атаки типа Cross-Origin, которые могут привести к доступу злоумышленников к конфиденциальным данным.
Политика того же происхождения может стать препятствием при разработке и тестировании веб-приложений, особенно когда работаете в локальной среде и имеете дело с ресурсами с различных хостов. Поэтому, иногда возникает необходимость временно отключить эту функцию для обеспечения беспрепятственного доступа к нужным ресурсам.
Теория
Команда --disable-web-security
, которую вы можете использовать в командной строке Chrome, отключает политику ограничения доступа к ресурсам из разных источников. Когда вы используете эту команду, браузер перестаёт применять определённые меры безопасности для защиты данных, и вы, как разработчик, можете видеть, как работает ваш код с ресурсами из различных источников.
Пример
Предположим, у вас есть веб-приложение, которое загружает контент из внешнего источника, например, делает запрос к API другого домена. Когда вы запускаете приложение в локальной среде, браузер блокирует такие запросы, и вы получаете сообщения об ошибках в консоли, подобные Failed to load resource: net::ERR_CONNECTION_RESET
. Для обхода данной проблемы можно временно отключить политику того же происхождения.
Для этого:
- Закройте все экземпляры браузера Chrome.
- Откройте командную строку или терминал.
-
Выполните следующую команду:
chrome.exe --disable-web-security --user-data-dir="[каталог]"
Где [каталог]
— это любая существующая директория на вашем компьютере, куда браузер будет сохранять данные сессии. Например: C:\temp\chrome
.
- После выполнения команды откроется новый экземпляр браузера, в котором отключены его стандартные меры безопасности. Помните, что при этом браузер предупредит вас о том, что вы используете неподдерживаемый командный аргумент.
Применение
Важно отметить, что запуск браузера с отключенной защитой не предназначен для повседневного использования, особенно в сети. Это — временное решение, ориентированное исключительно на разработчиков, которым необходимо проверить функциональность своих приложений в условиях, максимально приближённых к реальным. Настоятельно рекомендуется отключить это состояние после того, как вы завершите тестирование, и никогда не использовать его при посещении ненадёжных сайтов.
Если проблема осталась даже после отключения web-security, обратите внимание на расширения вашего браузера. Как было указано, некоторые из них, например Adblock, могут блокировать ресурсы, исходя из ключевых слов вроде "banner" и "ad" в именах файлов. Простой способ проверить это — запустить Chrome в режиме инкогнито (Ctrl + Shift + N), где все расширения по умолчанию отключены. Если приложение работает в этом режиме, проблема может заключаться в одном из активных расширений.
Использование --disable-web-security
подходит только для разработчиков, кто осознаёт риски и знает, как с ними справляться. В обычной практике решение проблем с кросс-доменными запросами должно проходить через разработку правильных серверных CORS-заголовков и иных легитимных способов обеспечения взаимодействия между системами. Это улучшает безопасность, повышает надёжность приложений и делает практику разработки более соответствующей современным стандартам безопасности в Интернете.