Мне нужно, чтобы веб-приложение связывалось с программой, запущенной на компьютере конечного пользователя.
Веб-приложение требует аутентификации и обслуживается по протоколу https.
Программа работает наКомпьютер конечного пользователя включает в себя http-сервер, который прослушивает 127.0.0.1:12345.
Чтобы отправить данные из веб-приложения в программу, я выполняю запрос PUT, используя Fetch API.Это должен быть запрос CORS, поскольку PUT не разрешен для запроса не-CORS.(Запрос POST будет разрешен для запроса не-CORS, но я не смогу указать правильный Content-Type…)
Все это прекрасно работает с Chromium (версия 73), но не работает с Firefox(пробовал с версиями 60 и 67, запрос вообще не отправлялся, даже запрос CORS-preflight).
После некоторого исследования кажется, что он работает нормально, когда страница обслуживается по http, но не когдаон подается через https.Насколько я понимаю, похоже, что это связано со спецификацией, которая гласит:
[…] агентам пользователей разрешено завершать алгоритм и не делать запрос.Это может быть сделано, потому что, например:
- […]
- https для http не разрешен.
Есть ли способ работатьобойти это и позволить Firefox выполнять CORS-запросы к 127.0.0.1 через http, даже со страницы https?
Насколько я понимаю, поскольку запрос отправляется на localhost (127.0.0.1), http не так уж многоменее безопасный, чем https.Запуск веб-приложения через http, а не через https будет работать, но это не вариант.Наличие сертификата TLS для localhost, установленного на компьютере конечного пользователя, для запуска сервера https в программе, которая запускается на компьютере конечного пользователя, на самом деле тоже не вариант…
РЕДАКТИРОВАТЬ: веб-приложение пытается получить доступ к http://127.0.0.1/12345,, а не http://localhost:12345, как я уже писал ранее.
Согласно примечанию в конце MDN Web Doc осмешанный контент , Firefox должен разрешать смешанный контент от http://127.0.0.1.