php localhost автоматически перенаправляет на https [duplicate]

Я не нашел, как я могу получить файл из Uri.

blockquote>

Нет файла. ACTION_OPEN_DOCUMENT и ACTION_GET_CONTENT не открывают файл. Они открывают документ. Этот документ может быть файлом. Возможно, это не так. Это Uri может указывать на:

  • Локальный файл на внешнем хранилище
  • Локальный файл на внутренней памяти для другого приложения
  • Локальный файл на съемном носителе
  • Локальный файл, который зашифрован и нуждается в расшифровке на лету
  • Поток байтов, хранящихся в столбце BLOB в базе данных
  • Часть содержимого, которое нужно загрузить другим приложением сначала
  • ... и т. д.

Как я могу получить реальную путь к файлу?

blockquote>

У вас нет.

Если вы хотите только принимать файлы, интегрируйте библиотеку выбора файлов вместо используя ACTION_OPEN_DOCUMENT или ACTION_GET_CONTENT.

Если вы используете ACTION_GET_CONTENT, а схема Uri, которую вы получаете, это file, тогда getPath() будет файловым путем.

В противном случае вам нужно понять, что вы не знаете, откуда документ выходит из , и перестать думать с точки зрения «реального пути к файлу». Используйте ContentResolver и openInputStream() или DocumentFile.fromSingleUri() или аналогичные методы для работы с Uri.

227
задан Brett Mathe 22 August 2014 в 15:54
поделиться

18 ответов

Я считаю, что это вызвано HSTS - см. http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

Если у вас (разработаны) любые другие локальные сайты, которые отправьте заголовок HSTS ...

, например. Строгая транспортная безопасность: max-age = 31536000; IncludeSubdomains; preload

... тогда, в зависимости от значения max-age, будущие запросы на localhost должны будут обслуживаться через HTTPS.

Чтобы обойти это, я сделал следующее.

  • В адресной строке Chrome введите «chrome: // net-internals / # hsts»
  • . В самом низу страницы находится текстовое поле QUERY domain - убедитесь, что localhost известен браузеру. Если он говорит «Не найден», это не тот ответ, который вы ищете.
  • Если это так, УДАЛИТЕ домен локального домена, используя текстовое поле над
  • . Ваш сайт должен теперь работать, используя простой старый HTTP

Это не постоянное решение, но, по крайней мере, оно будет работать между проектами. Если кто-то знает, как навсегда исключить локальный хост из списка HSTS, пожалуйста, дайте мне знать:)

UPDATE - ноябрь 2017

Недавно Chrome переместил этот параметр, чтобы сидеть в разделе политики безопасности домена домена

ОБНОВЛЕНИЕ - декабрь 2017 Если вы используете домен .dev, см. другие ответы ниже, так как Chrome (и другие) заставляют HTTPS через предварительно загруженный HSTS.

352
ответ дан BigJump 26 August 2018 в 06:22
поделиться

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

  1. Нажмите на проект визуальной студии (верхний уровень) в проводнике решений и перейдите в окно свойств.
  2. Измените SSL Включено на true. Теперь вы увидите другой номер порта в качестве «URL-адреса SSL» в окне свойств.
  3. Теперь, когда вы запускаете приложение (или просматриваете его в браузере), вам необходимо вручную изменить номер порта на номер порта SSL в адресной строке.

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

0
ответ дан Arunabh Mukherjee 26 August 2018 в 06:22
поделиться

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

C: \ Users [users] \ AppData \ Local \ Google \ Chrome

5
ответ дан Brett Mathe 26 August 2018 в 06:22
поделиться

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

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

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

3
ответ дан CalderBot 26 August 2018 в 06:22
поделиться

Piggybacking off Adiyat Mubarak

Не удалось обновить, поскольку он просто обновлялся на 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)
208
ответ дан Community 26 August 2018 в 06:22
поделиться

Ответ @Adiyat Mubarak не помог мне. Когда я попытался очистить кеш и перезагрузить, страница все еще перенаправляется на https.

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

-2
ответ дан cph2117 26 August 2018 в 06:22
поделиться

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

. Что все-таки сработало, это просто изменение домена.

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

5
ответ дан diogo.abdalla 26 August 2018 в 06:22
поделиться

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

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

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors
0
ответ дан gtamborero 26 August 2018 в 06:22
поделиться

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

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

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

-1
ответ дан Mr ISH 26 August 2018 в 06:22
поделиться

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

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

47
ответ дан rafawhs 26 August 2018 в 06:22
поделиться

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

-1
ответ дан Renan Coelho 26 August 2018 в 06:22
поделиться

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

5
ответ дан siim 26 August 2018 в 06:22
поделиться

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

17
ответ дан sparkplug 26 August 2018 в 06:22
поделиться

ленивое и быстрое решение для ленивых людей вроде меня (работает в Chrome 67).

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

0
ответ дан spekdrum 26 August 2018 в 06:22
поделиться

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

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

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

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

160
ответ дан Trevor 26 August 2018 в 06:22
поделиться

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

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

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

5
ответ дан user2167582 26 August 2018 в 06:22
поделиться

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

0
ответ дан user9143776 26 August 2018 в 06:22
поделиться

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

0
ответ дан Wouter Schoofs 26 August 2018 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: