Google Chrome перенаправляет localhost на https
Когда я отлаживаю проект Visual Studio с помощью Chrome, браузер пытается перенаправить на https-эквивалент моего веб-адреса. У меня не включен SSL в веб-проекте, и начальный URL-адрес является http-URL. Когда я отлаживаю с помощью FireFox или IE, у меня нет этой проблемы.
Я переустановил Chrome, который исправил проблему за день. Без загрузки каких-либо дополнений проблема повторилась на следующий день.
Что заставляет Chrome перенаправлять localhost на https?
Показывает проверку сети: URL запроса:data:text/html,chromewebdata Заголовки запроса Отображаются предварительные заголовки User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/36.0.1985.143 Safari/537,36
Нет предварительного просмотра и нет данных ответа на этих вкладках.
36 ответов
Я считаю, что это вызвано HSTS - см. http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
Если у вас есть (разработаны) любые другие локальные сайты, которые отправляют заголовок HSTS...
например. Строгая транспортная безопасность: максимальный возраст =31536000; IncludeSubdomains; предварительная нагрузка
... затем, в зависимости от значения max-age, будущие запросы к localhost должны будут обслуживаться по HTTPS.
Чтобы обойти это, я сделал следующее.
- В адресной строке Chrome введите "chrome://net-internals/#hsts"
- В самом низу страницы находится текстовое поле домена QUERY - убедитесь, что localhost известен браузеру. Если написано "Не найдено", это не тот ответ, который вы ищете.
- Если это так, УДАЛИТЕ домен localhost, используя текстовое поле выше
- Ваш сайт теперь должен работать, используя старый добрый HTTP
Это не постоянное решение, но, по крайней мере, оно заработает между проектами. Если кто-нибудь знает, как навсегда исключить localhost из списка HSTS, пожалуйста, дайте мне знать:)
ОБНОВЛЕНИЕ - ноябрь 2017
Chrome недавно переместил этот параметр, чтобы он находился в разделе " Удалить политики безопасности домена".
ОБНОВЛЕНИЕ - декабрь 2017 г. Если вы используете домен.dev, посмотрите другие ответы ниже, так как Chrome (и другие) принудительно устанавливает HTTPS через предварительно загруженный HSTS.
У меня возникла та же проблема в Chrome, и я безуспешно пытался использовать решение BigJump.
Я исправил свою проблему путем принудительного обновления, как показано в этом блоге (первоначально из этого ответа SuperUser).
Убедитесь, что ваша адресная строка использует схему http, а затем выполните эти шаги, возможно пару раз:
- Откройте панель инструментов разработчика (CTRL+SHIFT+I)
- Нажмите и удерживайте значок перезагрузки / щелкните правой кнопкой мыши значок перезагрузки.
- Меню откроется.
- Выберите третий вариант в этом меню ("Очистить кэш и полная перезагрузка")
НОВЫЕ РАЗРАБОТКИ! (если у вас Chrome 63+)
Если ваш локальный домен .dev
тогда я не думаю, что ранее принятые и рабочие ответы больше не применяются. Это связано с тем, что с Chrome 63 Chrome будет принудительно устанавливать домены.dev в HTTPS через предварительно загруженный HSTS.
Что это значит, .dev
в основном больше не будет работать, если у вас нет надлежащим образом подписанного SSL-сертификата - больше не допускается использование самозаверяющих сертификатов Узнайте больше на этом блоге.
Таким образом, чтобы решить эту проблему сейчас и избежать повторения в будущем .test
является одним из рекомендуемых доменов, поскольку он зарезервирован IETF для целей тестирования / разработки. Вы также должны быть в состоянии использовать .localhost
для местного разработчика
Не удалось обновить, так как это просто обновление по https. Выполняет некоторые из тех же шагов.
1. Open chrome developer tools (ctrl + shift + i)
2. Network Tab at the top
3. Click Disable cache checkbox at the top (right under network tab for me).
4. Refresh page (while the developer tools is still open)
Я сталкиваюсь с той же проблемой, но только в Chrome Canary и ищу решение, которое нашел в этом посте.
В одной из следующих версий Chrome все домены, заканчивающиеся на.dev (и.foo) будут перенаправлены на HTTP через предварительно загруженный заголовок HTTP Strict Transport Security (HSTS).
{ "name": "dev", "include_subdomains": true, "mode": "force-https" },
{ "name": "foo", "include_subdomains": true, "mode": "force-https" },
Итак, измените ваши домены.
Перейдите в chrome: // net-internals / #hsts. В разделе «Удалить политики безопасности домена» введите localhost и нажмите кнопку «Удалить».
Теперь перейдите в chrome: // settings / clearBrowserData, установите флажок «Кэшированные изображения и файлы» и нажмите кнопку «Очистить данные».
Открыто Chrome Developer Tools
-> перейти к Network
-> выбрать Disable Cache
-> перезагрузить
Я также боролся с этой проблемой. Похоже, что HSTS предназначен только для доменных имен. Так что, если вы разрабатываете на локальной машине, гораздо проще использовать IP-адрес. Поэтому я перешел с localhost на 127.0.0.1
Chrome 63 (выйдет с декабря 2017 года) принудительно перенаправляет все домены, заканчивающиеся на.dev (и.foo), на HTTPS через предварительно загруженный заголовок HTTP Strict Transport Security (HSTS). Вы можете найти больше информации об этом здесь.
С https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/
Ни один из вариантов исправлений не работал для меня, для исправления https://localhost:3000
Дела
нажмите и удерживайте Reload
Кнопка и выберите Empty Cache and Hard Reload
кажется, это только вариант на localhost
Как я решил эту проблему с хромом 79:
Просто вставьте этот URL-адрес в поисковый запрос chrome://flags/#allow-insecure-localhost
Мне помогло использование экспериментальных функций.
Ленивое и быстрое решение для таких ленивых, как я (работа в Chrome 67).
Просто запустите другое окно Chrome в невидимом режиме с опцией "Окно инкогнито" (CTRL + SHIFT + N). Нет необходимости удалять кеш, не нужно погружаться в глубокие настройки Chrome и т. Д.
Это может быть вызвано кэшированным перенаправлением https и может быть исправлено путем очистки кэша вручную, как в ответе Адиата Мубарака.
Но если вы посещаете localhost, вы, скорее всего, являетесь разработчиком, и в этом случае вы найдете расширение для очистки кэша, такое как "classic cache killer" (см., Например, https://chrome.google.com/webstore/search/classic%20cache%20killer?hl=en) полезен в различных ситуациях, и, вероятно, он уже установлен.
Итак, быстрое исправление: установите средство кеширования (если у вас его еще нет), включите его и перезагрузите страницу. Готово!
Я никогда не выяснял корень проблемы, однако я смог решить эту проблему. Я удалил папку кэша приложения Google Chrome, что решило проблему.
C: \ Users [Пользователи]\AppData\Local\Google\Chrome
К сожалению, ни одно из перечисленных здесь решений не помогло мне решить эту проблему. Я исправил эту проблему, используя http://127.0.0.1/ (IP-адрес) вместо http://localhost/. Быстрый небольшой взлом для работы с угловой разработкой с браузером Chrome.
Пробовал все упомянутое (настройки браузера, hsts и т. Д.), Но у меня ничего не работало.
Я решил это, добавив конечный
.localhost
к псевдонимам хоста.
Как это:
127.0.0.1 myproject.localhost
127.0.0.1 dev.project.localhost
Ничто из этого не помогло мне. Это начало происходить после обновления chrome (Версия 63.0.3239.84, linux) с локальным URL. Всегда будет перенаправлять на https, несмотря ни на что. Потерял несколько часов и много терпения на этом
В конце концов, сработало только изменение домена.
Для чего стоит, домен был.app. Может быть, это что-то делать? И просто изменил его на.test и chrome перестал его перенаправлять
Простое решение - отредактировать /etc/hosts
file и установите по одному псевдониму для каждого проекта.
127.0.0.1 project1 project2 project3
Эти бездоменные имена никогда не будут иметь проблем с HSTS, если вы не отправите ответ HSTS, упомянутый @bigjump, и с дополнительным преимуществом поддержания сеанса входа в систему, если вы переключаетесь между проектами.
Перейти к
chrome://net-internals/#hsts
Введите домен в разделе «Удалить политики безопасности домена» и нажмите кнопку «Удалить».
Ни одно из других решений мне не помогло. В качестве временной работы я перехожу к:
(заменять3000
с желаемым портом) И я могу, по крайней мере, получить доступ к своему локальному хосту таким образом!
В моем случае мой путь к проекту был установлен как /Users/me/dev/project_root/
и управлял nodeJS
/express
сервер оттуда. Переименование моего пути к /Users/me/project_root
(удаление dev
от пути к проекту) решил проблему.
Скорее всего, связано с этим новым правилом:
Chrome 63 (выйдет с декабря 2017 года) принудительно перенаправляет все домены, заканчивающиеся на.dev (и.foo), на HTTPS через предварительно загруженный заголовок HTTP Strict Transport Security (HSTS).
Вы можете найти больше информации об этом здесь.
С помощью:
- Google Chrome версии 70.0.3538.110 (официальная сборка) (64-разрядная версия)
- nodeJS v9.2.0
Chrome 63 автоматически запускает домены.dev в HTTPS через предварительно загруженный HSTS.
Быстрое исправление: просто измените домены.dev на.localhost.
Проблема также может быть воспроизведена в VS 2019. Это вызвано тем, что "Включить отладку Javascript из среды разработки Visual Studio". VS подключается к Chrome, и есть вероятность, что из-за безопасности или причин, известных Google и Microsoft, он иногда не может подключиться, и у вас есть эта проблема. Я могу запускать http и https с localhost из приложения ASP net core 3.1. Поэтому во время отладки в VS перейдите к запуску со стрелкой -> IIS express, чуть ниже "Веб-браузер (Chrome)" выберите "Отладка сценария (отключено)".
См. Статью: https://devblogs.microsoft.com/aspnet/client-side-debugging-of-asp-net-projects-in-google-chrome/
https://docs.microsoft.com/en-us/visualstudio/debugger/debugging-web-applications?view=vs-2019
Всегда возвращайтесь к документации Microsoft, чтобы получить больше ясности, чем поиск в Google.
Это не решение, это просто обходной путь.
Нажмите на свой проект Visual Studio (верхний уровень) в обозревателе решений и перейдите в окно свойств.
Изменить SSL включен на true. Теперь вы увидите другой номер порта как "SSL URL" в окне свойств.
Теперь, когда вы запускаете свое приложение (или просматриваете в браузере), вам нужно вручную изменить номер порта на номер порта SSL в адресной строке.
Теперь он отлично работает как ссылка SSL
Если вы работаете на сайте Wordpress и после того, как попробовали все на этой странице, http://127.0.0.1/wp-admin перенаправляется на https://127.0.0.1/wp-admin . Попробуй это:
Перейдите в wp-config.php и замените
определить('WP_HOME','https://example.com');
определить('WP_SITEURL','https://example.com');
к
определить('WP_HOME','http://127.0.0.1');
определить('WP_SITEURL','http://127.0.0.1');
Проверено в Chrome и Firefox.
Перейдите к настройкам в Chrome, а затем к "Расширенные настройки", в разделе "Конфиденциальность и безопасность" нажмите "Очистить данные браузера", а затем очистите все данные. Я следовал за этими шагами, и это работало для меня. Надеюсь, это поможет кому-то.
Для меня в Chrome 90 работало следующее. Мое приложение открывало локальный сервер веб-пакетов на
localhost:3000
который автоматически перенаправляется на HTTPS, и я получил
ERR_SSL_PROTOCOL_ERROR
.
Я щелкнул маленький значок информации рядом с URL-адресом и открыл настройки сайта из раскрывающегося меню. В списке
Insecure content
был установлен на
Block (default)
.
Я изменил это на
Allow
, и просто перезагрузил http-версию, и она загрузилась нормально.
Надеюсь, это поможет людям.
Я не мог заставить работать какое-либо решение; но перенаправление в моем файле web.config позволило мне продолжить работу (localhost), пока я не найду причину проблемы.
По сути, это правило перезаписи, которое превращает HTTPS в HTTP; похоже, оно переписало предыдущее правило перенаправления HTTP на HTTPS.
Он должен находиться в разделе <system.webServer> </system.webServer> в web.config.
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
В моем случае я использовал синхронизацию браузера на Mac, и браузер продолжал перенаправлять http: // localhost:3000 на https: // localhost:3000.
Я использую Valet для обслуживания местных сайтов, и я запустил
valet secure
в локальном домене * .test, чтобы предоставить ему сертификат SSL. Поскольку я проксировал этот домен HTTPS при синхронизации браузера, браузер загружал localhost:3000 с HTTPS.
Чтобы исправить это, мне пришлось:
- запустить
valet unsecure
удалить сертификат SSL - запустить
valet restart
- перезапустить браузер-синхронизацию
- открыть localhost:3000 в браузере ( в моем случае -Vivaldi, это браузер Chromium)
- Открыть инструменты разработчика
- Отметьте «Отключить кеш» на вкладке «Сеть».
- Обновите страницу
Оказывается, это сообщение об ошибке отправило меня в кроличью нору.
Для меня проблема заключалась в том, что страница, на которую я пытался загрузить
http
не мог вернуть ответ (из-за ошибки в моем коде, которая приводила к сбою сервера).
Chrome автоматически пытался
https
автоматически в качестве резервной копии, поэтому вместо того, чтобы видеть фактическую ошибку (время ожидания страницы истекло), я видел ошибку SSL, которая была отвлекающим маневром.
Исправление сбоя базового сервера и возврат к
http://localhost:5000
исправил мою проблему.