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


362

Коли я налагоджую проект Visual Studio за допомогою Chrome, браузер намагається переспрямувати на еквівалент https моєї веб-адреси. У мене не включено SSL у веб-проекті, а початковою URL-адресою є URL-адреса http. Коли я налагоджую за допомогою FireFox або IE, у мене немає цієї проблеми.

Я перевстановив Chrome, який вирішив проблему на день. Не завантажуючи жодних доповнень, проблема повторилася на наступний день.

Що робить Chrome перенаправляти localhost на https?

Показує мережеві огляди: URL-адреса запиту: дані: text / html, chromeebdata Заголовок запиту Попередні заголовки відображаються Користувачем-агентом: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, як Gecko) Chrome / 36.0.1985.143 Safari / 537.36

На цих вкладках відсутні дані попереднього перегляду та відсутні відповіді.


що показує мережевий інспектор?
c69

4
Інспекція мережі зовсім не показує багато. Я навіть не бачу запитуваної URL-адреси. URL-адреса запиту: дані: text / html, chromewebdata Заголовок запиту відображаються попередні заголовки Кеш-контроль: без кешу Прагма: без кешу Користувач-агент: Mozilla / 5.0 (Windows NT 6.3; WOW64) AppleWebKit / 537.36 (KHTML, як Gecko ) Chrome / 36.0.1985.143 Safari / 537.36
Brett

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

Просто перевстановивши хром, вирішуються всі проблеми .. тепер мій .dev і більше не переспрямовується на https. Я б хотів, щоб я спробував це раніше .. витратив стільки часу ..
Тадж Хан

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

Відповіді:


591

Я вважаю, що це викликано HSTS - див. Http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Якщо у вас є (розроблено) будь-які інші сайти localhost, які надсилають заголовок HSTS ...

напр. Сувора транспортна безпека: максимальний вік = 31536000; includeSubDomains; попереднє завантаження

... тоді, залежно від значення максимального віку, майбутні запити до localhost потрібно буде надсилати через HTTPS.

Щоб обійти це, я зробив наступне.

  • У адресному рядку Chrome введіть "chrome: // net-Internals / # hsts"
  • Внизу сторінки знаходиться текстове поле домену QUERY - переконайтеся, що браузер відомий localhost. Якщо на ньому написано "Не знайдено", це не відповідь, яку ви шукаєте.
  • Якщо це так, ВИДАЛУЙТЕ домен localhost, використовуючи текстове поле вище
  • Зараз ваш сайт повинен працювати за допомогою старого звичайного HTTP

Це не постійне рішення, але принаймні змусить його працювати між проектами. Якщо хтось знає, як назавжди виключити localhost зі списку HSTS, будь ласка, повідомте мене :)

ОНОВЛЕННЯ - листопад 2017 року

Нещодавно Chrome перемістив цей параметр, щоб перейти під " Видалити правила безпеки домену"

введіть тут опис зображення

ОНОВЛЕННЯ - грудень 2017 р. Якщо ви використовуєте домен .dev, див. Інші відповіді нижче, оскільки Chrome (та інші) примушують HTTPS через попередньо завантажений HSTS.


6
Так засмучує. Але так радий, що знайшов причину.
Zapnologica

21
Я спробував здійснити запит на "localhost", але він говорить Не знайдено
Чин

2
Я знаю, що це стара публікація, але будь-яка ідея, як вирішити, якщо при запиті localhost відповідно до прийнятої відповіді він повертається "не знайдено"? Спробував все у всіх коментарях та відповідях тут.
DarkW1nter

28
Це загальне сміття від Chrome. Як вони розраховують, що ми почнемо локально розробляти, коли вони просто довільно почнуть примушувати вас до HTTPS на вашому вигадливому localhost? Я використовую все просто чудово протягом місяців, заходжу в один ранок і отримую це лайно для вирішення. Жоден із цих «виправлень» не працює для мене.
Елісон

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-й варіант ("Порожній кеш-пам'ять та перезавантаження")

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
Чемпіон

190

НОВІ РОЗВИТКИ! (якщо у вас Chrome 63+)

Якщо ваш домен localhost є, .devто я не думаю, що раніше прийняті та діючі відповіді більше не застосовуються. Це пов’язано з тим, що з Chrome 63 Chrome примусить домени .dev до HTTPS через попередньо завантажений HSTS.

Це означає, що в .devосновному більше не працюватиме, якщо у вас не буде належним чином підписаний сертифікат SSL - більше не дозволено самостійно підписати сертифікати! Дізнайтеся більше в цій публікації в блозі.

Тож вирішити цю проблему зараз та уникнути повторення цього питання в майбутньому .testє одним із рекомендованих доменів, оскільки IETF зарезервовано для тестування / розробки. Ви також повинні мати можливість використовувати .localhostдля місцевих розробників.


2
Я змінив усі .dev домени на .app, все-таки проблему. Будь-які вказівки на те, що може бути проблемою?
Джефф

5
@Jeff спробуйте використовувати.test
Віталій Зуріан

18
Це НАЙКРИТНО дратує. Напевно, повинен бути якийсь спосіб, щоб не змусити нас змінити сферу розвитку, правда?
Emanuele Ciriachi

5
заміни .devна .testпрацював для мене теж у Chrome 63
Лехнат

12
Ці контрінтуїтивні налаштування за замовчуванням страшні. Чому варто втрачати час налагодження налаштувань середовища для розробників або просто здогадуватися, що відбувається не так, щоб виявити, що все в порядку їх сторона, і Google Chrome перенаправляє .dev до HTTPS за замовчуванням. Де логіка. Чому .dev, а чому не інші TLD? Абсолютно не інтуїтивно зрозумілий.
Meglio

50

Спекуляція від Adiyat Мубарака

Не вдалося важко оновити, оскільки це було просто оновлення на 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, зазначене вище, не робило.
DiegoSalazar

Це єдине, що працювало для мене після того, як спробував рішення 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 для моїх місцевих сайтів розробників ...
matt lohkamp

2
З вікі , це .localзвучить дещо крихко, хоча я гадаю, що це безпечніше, ніж інші TLD. Я також відмовляюся від використання .localhostcoz, схоже, хром робить якийсь нативний переадресацію, який, здається, заважає моїй rproxy працювати. .testздається найбезпечнішим, хоча незграбним через зіткнення простору імен зі всіма тими рядками, які використовуються в TDD / .test()методах тощо
dwelle

8
На цьому втратили день. Велике спасибі
Тоніо

17
чорт забираю, щойно оновлений до Chrome 63 і тепер це впливає на мене .dev. WTF. Мені байдуже, чи це дійсний TLD чи ні, якщо мені не потрібен або я хочу або у нього є веб-сайт із використанням SSL, то не примушуйте його до мене.
dbinott

6
Ух, це мене злить. Для деяких середовищ розробки це не так просто, як просто змінити tld. Зараз я переглядаю години роботи, щоб змінити це на те, над чим працюю. Це насправді не їхня справа, що я хочу використовувати для розвитку.
Бретт Томас

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 оновлена, тому це рішення більше не працюватиме.
користувач2167582

1
Це має працювати у всіх доменах, якщо у вас відкрита панель інструментів для розробників
Хуссам

7

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


Це добре, але чи можна забезпечити кожного разу, коли ви вводите localhost, що він замінює слова localhost на 127.0.0.1?
Саймон

Величезне спасибі
hedha

6

Я ніколи не з'ясовував корінь проблеми, проте мені вдалося виправити цю проблему. Я видалив папку кешу додатків Google Chrome, яка вирішила проблему.

C: \ Користувачі [користувачі] \ AppData \ Місцеві \ Google \ Chrome


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

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

1
@DaleBurrell Ви не праві. Це викликано HSTS: en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
langpavel

6

Це може бути викликано кешованим перенаправленням https, а це можна виправити, очистивши кеш вручну, як у відповіді Адіята Мубарака.

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

Тож швидке виправлення: встановіть вбивцю кешу (якщо у вас його ще немає), увімкніть його та перезавантажте сторінку. Готово!



6

Ледаче і швидке рішення для ледачих людей, як я (працює в Chrome 67).

Просто запустіть ще одне вікно Chrome у режимі Stealth , за допомогою параметра "Вікно анонімного перегляду" (CTRL + SHIFT + N). Не потрібно видаляти кеш, не потрібно занурюватися в глибокі налаштування Chrome тощо.


1
У мене виникли проблеми з іншими пропозиціями - можливо, тому, що мені потрібно було відкрити декілька різних веб-сторінок одночасно, всі на одному домені, але на різних серверах, деякі з цих веб-серверів використовували https, інші - звичайний http. Нічого іншого не працює, окрім "Вікна анонімного перегляду"!
Клави

Це працює, але це робить мої запити AJAX надзвичайно повільними через попередні заголовки.
Гілочки

5

Жодне з них не працювало на мене. Це почалося після хронового оновлення (версія 63.0.3239.84, linux) з локальною URL-адресою. Завжди буде переспрямовано на https незалежно від того. Втратили кілька годин і багато терпіння на цьому

Що все-таки спрацювало - це лише зміна домену.

Що варто, домен був .app. Можливо, це щось зробило? І просто змінив його на .test і хром перестав його перенаправляти


5

Як я вирішив цю проблему з хромом 79:

Просто вставте цю URL-адресу в пошук chrome input : // flags / # enable-insecure-localhost

Це допомогло мені за допомогою експериментальних функцій.


3

На жаль, жодне з перерахованих тут рішень не допомогло мені вирішити це питання. Я вирішив цю проблему, використовуючи http://127.0.0.1 (ip-адресу) замість http: // localhost . Швидкий невеликий злом для роботи з кутовою розробкою з хромованим браузером.


1

У моєму випадку я мав шлях до проекту встановити як /Users/me/dev/project_root/і запускав nodeJS/ expressсервер звідти. Перейменування мого шляху до /Users/me/project_root(видалення devзі шляху до проекту) вирішило проблему.

Швидше за все, це стосується цього нового регламенту:

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

Ви можете знайти більше інформації про це тут .

Використання:

  • Версія 70.0.3538.110 Google Chrome (офіційна збірка) (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. Клацніть на проект візуальної студії (верхній рівень) у провіднику рішень та перейдіть до вікна властивостей.

  2. Змінити SSL увімкнено на істинне. Тепер ви побачите інший номер порту як "SSL URL" у вікні властивостей.

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

Тепер він прекрасно працює як SSL-посилання


0

Відкрийте Chrome Developer Tools-> перейдіть до Network-> виберіть Disable Cache-> перезавантажте


-1

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


-2

@Adiyat Mubarak відповідь не працював для мене. Коли я намагався очистити кеш-пам'ять та перезавантажити, сторінку все одно перенаправляли на https.

Моє рішення: у верхньому правому куті панелі URL-адреси (ліворуч від піктограми улюбленої зірки) є піктограма з «x» через неї. Клацніть правою кнопкою миші на цьому, і це буде щось говорити про "небезпечні сценарії", то є можливість завантажити їх все одно. Зробити це.


Чи знаєте ви, як називається цей параметр, або де ще його знайти? Я не бачу ярлика в моєму рядку URL-адрес.
Carolyn Conway

@CarolynConway Я не впевнений, як це називається. Цілком можливо, що вона з’являється лише для мого конкретного питання.
cph2117

-2

Іншим варіантом буде використання чогось на зразок https://github.com/rchampourlier/tunnelss

Звичайно, він додав ще одну залежність / налаштування, але він також дозволяє тестувати https в розробленому, що може бути добре.

Однак я використовую 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.