Google Chrome перенаправляет localhost на https


362

Когда я отлаживаю проект 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

Нет предварительного просмотра и нет данных ответа на этих вкладках.


что показывает Network Inspector?
c69

4
Проверка сети не показывает много вообще. Я даже не вижу запрашиваемый URL. URL запроса: data: text / html, chromewebdata Заголовки запроса Отображаются предварительные заголовки Cache-Control: no-cache Pragma: no-cache Пользовательский агент: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) ) Chrome / 36.0.1985.143 Safari / 537.36
Бретт Мате

ХРОМ 63: продолжайте прокручивать ответы
североамериканец

Просто переустановка моего chrome решает все проблемы .. теперь мой .dev и больше не перенаправляет на https. Я хотел бы попробовать это раньше .. впустую так много времени ..
Тадж-Хан

10
Любой, кто недавно столкнулся с этой проблемой, если вы пытаетесь использовать его в .devкачестве локального домена, это совершенно новая проблема, поэтому я не думаю, что какой-либо из этих ответов больше будет работать. Начиная с Chrome 63 ... "Chrome для принудительной установки доменов .dev в HTTPS через предварительно загруженный HSTS". Так что больше нет самозаверяющих сертификатов SSL. Судя по всему .dev это реальный домен. Кто знал.
Тревор,

Ответы:


593

Я полагаю, что это вызвано 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.


6
Так расстраивает. Но так рад, что нашел причину.
Zapnologica

21
Я пытался запросить "localhost", но он говорит Не найдено
Chin

2
Я знаю, что это старый пост, но есть ли идеи, как решить, если при запросе localhost согласно принятому ответу он возвращает «not found»? Перепробовал все во всех комментариях и ответах здесь.
DarkW1nter

28
Это полный мусор от Chrome. Как они ожидают, что мы разработаем локально, когда они просто произвольно начинают принуждать вас к HTTPS на вашем сумасшедшем локальном хосте? Я использовал все отлично в течение нескольких месяцев, я захожу однажды утром и получаю эту хрень, чтобы разобраться. Ни одно из этих «исправлений» не работает для меня.
Элисон

50
Если вы используете домен localhost, .dev то я считаю, что это не работает @Alison, поскольку с недавнего выпуска v.63 ... "Chrome для принудительной установки доменов .dev в HTTPS через предварительно загруженный HSTS". Таким образом, .dev в основном больше не будет работать, если у вас нет надлежащего подписанного SSL-сертификата. Самостоятельно подписанные сертификаты не допускаются. Подробнее .
Тревор

308

У меня возникла та же проблема в Chrome, и я безуспешно пытался использовать решение BigJump .

Я исправил свою проблему путем принудительного обновления, как показано в этом блоге (первоначально из этого ответа SuperUser ).

Убедитесь, что ваша адресная строка использует схему http, а затем выполните эти шаги, возможно, пару раз:

  1. Откройте панель инструментов разработчика (CTRL + SHIFT + I)
  2. Нажмите и удерживайте значок перезагрузки / щелкните правой кнопкой мыши значок перезагрузки.
  3. Меню откроется.
  4. Выберите третий вариант в этом меню («Очистить кэш и полная перезагрузка»)

3
Вы также можете щелкнуть правой кнопкой мыши по значку обновления / перезагрузки, чтобы перейти в меню Hard Reload
avjaarsveld

3
Я не могу заставить это решение работать. Проблема в том, что он делает перезагрузку на localhost: 3000 (в моем случае). Попытка изменить протокол перед перезагрузкой, но это не работает.
john_omalley

1
Спасибо!!! Это восстанавливает оригинальный localhost: port, если вы испортили файл startup.cs с этим ... var options = new RewriteOptions (). AddRedirectToHttpsPermanent (); app.UseRewriter (варианты); }
hubert17

Сработал для меня, нажав «CTRL + SHIFT + R» для полной перезагрузки.
LP. Гонсалвес

На хроме это F12, а не CTRL + SHIFT + I
Champ

190

НОВЫЕ РАЗРАБОТКИ! (если у вас Chrome 63+)

Если ваш домен localhost, .devто я не думаю, что ранее принятые и рабочие ответы больше не применяются. Это связано с тем, что в Chrome 63 Chrome будет принудительно устанавливать домены .dev в HTTPS через предварительно загруженный HSTS.

Это означает, что, по .devсути, больше не будет работать, если у вас не будет надлежащим образом подписанного SSL-сертификата - больше не допускаются самозаверяющие сертификаты! Узнайте больше в этом блоге.

Поэтому исправить эту проблему сейчас и избежать повторения в будущем .test- это один из рекомендуемых доменов, поскольку он зарезервирован IETF для целей тестирования / разработки. Вы также должны быть в состоянии использовать .localhostдля локального разработчика.


2
Я изменил все домены .dev на .app, но проблема та же. Любые указатели на то, что проблема может быть?
Джефф

5
@Джефф попробуй использовать.test
Виталий Зуриан

18
Это крайне раздражает. Конечно, должен быть какой-то способ не заставлять нас менять область разработки, верно?
Эмануэле Чириачи

5
замена .devна .testработала у меня тоже в Chrome 63
Lekhnath

12
Эти нелогичные значения по умолчанию ужасны. Зачем терять время на отладку настроек среды разработки или просто гадать, что идет не так, просто чтобы обнаружить, что все в порядке с их стороны, и именно Google Chrome по умолчанию перенаправляет .dev в HTTPS. Где логика? Почему .dev, а не другие TLD? Абсолютно не интуитивно.
Meglio

50

Спекуляция с Адиятом Мубараком

Не удалось обновить, так как это просто обновление по 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)

Я здесь второй раз для решения. Большое спасибо.
Чамо,

1
Я использую домен .local, и это сработало, когда вышеописанное решение HSTS этого не сделало.
Диего Салазар

Это единственное, что сработало для меня после того, как я попробовал решения BigJump и Adiyat Mubarak.
Алек Арсовский,

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

47

Я сталкиваюсь с той же проблемой, но только в 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" },

Итак, измените ваши домены.


2
это проблема, которую я пришел сюда, чтобы решить. мужик, теперь я должен придумать другое поддельное tld для моих местных сайтов разработчиков ...
Мэтт Лохкамп

2
Из вики , .localкажется своего рода хрупким, хотя я предполагаю , что это безопаснее , чем другие TLD. Я также отказываюсь от использования .localhostcoz, кажется, что chrome выполняет какое-то собственное перенаправление, которое, кажется, мешает моему rproxy работать. .testкажется наиболее безопасным, хотя и неуклюжим из-за столкновений пространства имен со всеми теми строками, которые используются в TDD / .test()методах и т. д.
dwelle

8
Потерял день на это. Большое спасибо
Тонио

17
блин, только что обновил до Chrome 63 и теперь это влияет на меня для .dev. WTF. Меня не волнует, является ли это действительным ДВУ или нет, если мне не нужен или не нужен мой сайт, использующий SSL, не навязывайте его мне.
dbinott

6
Вау, это меня бесит. Для некоторых сред разработки это не так просто, как просто изменить текст. Я смотрю на часы работы сейчас, чтобы изменить это на то, над чем я работаю. Это не их дело, что я хочу использовать для разработки.
Бретт Томас

18

Chrome 63 (выйдет с декабря 2017 года) принудительно перенаправляет все домены, заканчивающиеся на .dev (и .foo), на HTTPS через предварительно загруженный заголовок HTTP Strict Transport Security (HSTS). Вы можете найти больше информации об этом здесь.


2
^^ То же самое. Это затронуло и наши .appдомены на прошлой неделе. Мы временно переключаемся, .testхотя я не думаю, что это долгосрочное решение.
Russellmania

13

с https://galaxyinternet.us/google-chrome-redirects-localhost-to-https-fix/

Ни один из вариантов исправлений не работал для меня, для исправления https://localhost:3000это сделало.

нажмите и удерживайте Reloadкнопку и выберите Empty Cache and Hard Reload, кажется, это только вариант наlocalhost


это не работает на моем конце. Есть ли другое решение?
Раджу Паладия

Последний Chrome обновлен, поэтому это решение больше не будет работать.
user2167582

1
Это должно работать на всех доменах, если у вас открыта панель инструментов разработчика
Hussam

7

Я также боролся с этой проблемой. Похоже, что HSTS предназначен только для доменных имен . Так что, если вы разрабатываете на локальном компьютере, гораздо проще использовать IP-адрес. Поэтому я перешел с localhost на 127.0.0.1


Это нормально, но возможно ли гарантировать, что каждый раз, когда вы вводите localhost, он заменяет слова localhost на 127.0.0.1?
Саймон

Большое спасибо
хэдха

6

Я никогда не выяснял корень проблемы, однако я смог решить эту проблему. Я удалил папку кэша приложения Google Chrome, что решило проблему.

C: \ Users [Пользователи] \ AppData \ Local \ Google \ Chrome


1
Вы потеряли всю историю браузера или пароли?
Zapnologica

7
Я считаю, что проблема заключается в том, что Chrome сохраняет данные, когда вы посещаете домен с использованием HTTPS, а затем, если вы когда-нибудь снова посетите тот же домен, он автоматически переключается на HTTPS. Это проблема для разработчика, потому что, как только вы получаете доступ к любому сайту localhost с помощью HTTPS, внезапно все сайты locahost перенаправляются на HTTPS.
Дейл К

1
@DaleBurrell Вы не правы. Это вызвано HSTS: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel

6

Это может быть вызвано кэшированным перенаправлением https и может быть исправлено путем очистки кэша вручную, как в ответе Адиата Мубарака.

Но если вы посещаете localhost, вы, скорее всего, являетесь разработчиком, и в этом случае вы найдете расширение для очистки кэша, такое как «classic cache killer» (см., Например, https://chrome.google.com/webstore/search/classic%20cache % 20killer? Hl = en ) полезен в различных ситуациях, и, вероятно, он уже установлен.

Итак, быстрое исправление: установите средство кеширования (если у вас его еще нет), включите его и перезагрузите страницу. Выполнено!


Это
решило

6

Ленивое и быстрое решение для таких ленивых, как я (работа в Chrome 67).

Просто запустите другое окно Chrome в невидимом режиме с опцией «Окно инкогнито» (CTRL + SHIFT + N). Нет необходимости удалять кэш, не нужно погружаться в глубокие настройки Chrome и т. Д.


1
У меня были проблемы с другими предложениями - возможно, потому, что мне нужно было открыть несколько разных веб-страниц одновременно, все в одном домене, но на разных серверах, некоторые из этих веб-серверов использовали https, другие просто http. Больше ничего не работает, кроме "Окна инкогнито"!
Клос

Это работает, но это делает мои запросы AJAX чрезвычайно медленными из-за временных заголовков.
Веточки

5

Ничто из этого не помогло мне. Это начало происходить после обновления chrome (Версия 63.0.3239.84, linux) с локальным URL. Всегда будет перенаправлять на https, несмотря ни на что. Потерял несколько часов и много терпения на этом

В конце концов, то, что сработало, просто изменило домен

Для чего стоит, домен был .app. Может быть, это что-то делать? И просто изменил его на .test и chrome перестал его перенаправлять


5

Как я решил эту проблему с Chrome 79:

Просто вставьте этот URL в ваш поисковый ввод chrome: // flags / # allow-insecure-localhost

Это помогло мне с помощью экспериментальных функций.


3

К сожалению, ни одно из перечисленных здесь решений не помогло мне решить эту проблему. Я исправил эту проблему, используя http://127.0.0.1 (IP-адрес) вместо http: // localhost . Быстрый небольшой взлом для работы с угловой разработкой с браузером Chrome.


1

В моем случае мой путь к проекту был установлен как /Users/me/dev/project_root/и я запускал nodeJS/ expressserver оттуда. Переименование моего пути к /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

1

Простое решение этого - отредактировать ваш /etc/hostsфайл и установить один псевдоним для каждого проекта.

127.0.0.1   project1 project2 project3

Эти бездоменные имена никогда не будут иметь проблемы с HSTS, если вы не отправите ответ HSTS, упомянутый @bigjump, и с дополнительным преимуществом поддержания сеанса входа в систему, если вы будете переключаться между проектами.


0

Перейдите к настройкам в Chrome, а затем к «Расширенные настройки», в разделе «Конфиденциальность и безопасность» нажмите «Очистить данные просмотра», а затем очистите все данные. Я следовал за этими шагами, и это работало для меня. Надеюсь, это поможет кому-то.


0

Chrome 63 автоматически запускает домены .dev в HTTPS через предварительно загруженный HSTS.
Быстрое исправление: просто измените домены .dev на .localhost.


0

Это не решение, это просто обходной путь.

  1. Нажмите на свой проект Visual Studio (верхний уровень) в обозревателе решений и перейдите в окно свойств.

  2. Изменить SSL включен на true. Теперь вы увидите другой номер порта как «SSL URL» в окне свойств.

  3. Теперь, когда вы запускаете свое приложение (или просматриваете в браузере), вам нужно вручную изменить номер порта на номер порта SSL в адресной строке.

Теперь он отлично работает как ссылка SSL



-1

Для кого-то, у кого была та же проблема, я решил, нажав CTRL + SHIFT + DELETE, чтобы удалить только весь кеш браузера. Теперь я могу получить доступ к своему локальному веб-сайту по протоколу HTTP.


-2

@ Адият Мубарак ответ не работал для меня. Когда я попытался очистить кэш и выполнить полную перезагрузку, страница все еще перенаправлялась на https.

Мое решение: в верхнем правом углу панели URL (слева от значка звездочки избранного) есть значок с символом «х». Щелкните по нему правой кнопкой мыши, и он скажет что-то о «небезопасных сценариях», тогда есть возможность загрузить их в любом случае. Сделай это.


Вы знаете, как называется эта опция, или где еще ее найти? Я не вижу ярлык в моей строке URL.
Кэролин Конвей

@CarolynConway Я не уверен, как это называется. Возможно, что это появляется только для моей конкретной проблемы.
cph2117

-2

Другой вариант будет использовать что-то вроде https://github.com/rchampourlier/tunnelss

Конечно, он добавил еще одну зависимость / настройку, но он также позволяет тестировать https в dev, что может быть неплохо.

Я использую RVM, однако, чтобы заставить работать туннель, я должен был использовать sudo gem install tunnelssиsudo tunnelss


-4

Это самое быстрое решение сегодня (17-3-2018):

Закройте все вкладки / окна Chrome и запустите в командной строке это: (или добавьте его как шорткод)

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.