Следующая ситуация: у меня есть несколько систем Linux с некоторыми простыми серверами http (api) Python. В тех же системах есть браузеры firefox, запускающие веб-приложение через ssl, открытое из другого места (веб-сервер локальной сети). Веб-приложение пытается связаться с этим локальным сервером API Python (только локально, в той же системе). Итак, приложение пытается отправить запрос на публикацию на localhost/127.0.0.1/[::1] через http. Это ситуация со смешанным содержимым, потому что приложение изначально работает через SSL (размещено на другом сервере). Firefox разрешает это при использовании 127.0.0.1, чтобы использовать localhost, мне пришлось изменить настройки безопасности (я сделал это только для проверки). И все завершается со следующей ошибкой: TypeError: NetworkError при попытке получить тестовый запрос ресурсов:
fetch ('http://127.0.0.1:8080', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(data)}).then(response => {console.log(response);});
Axios перехватывает исключение, но возвращаемые объекты ответа об ошибке пусты. data — это очень простой объект json с 3 полями.
Проблема в том, что эти системы работают под управлением Firefox версий 57-60. Я могу успешно воспроизвести ту же проблему на моем локально установленном FF 60.2.2 в Windows 10, так что, похоже, это действительно проблема Firefox.
Однако новейшие версии Firefox могут безупречно взаимодействовать без каких-либо изменений в коде JS (в Windows 10). Сервер Python принимает и поддерживает CORS.
У меня нет возможности обновить эти браузеры.
Теперь я сделал несколько тестов с запросами GET. И на удивление они работают! как:
fetch ('http://127.0.0.1:8080').then(response => {console.log(response);});
успешно. и это:
fetch ('http://127.0.0.1:8080', {method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify(data)}).then(response => {console.log(response);});
терпит неудачу с:
TypeError: NetworkError when attempting to fetch resource.
Я бы заподозрил сервер python, но он работает с последними версиями FF в Windows 10. Кроме того, в инструментах разработчика Firefox я не вижу в сети ЛЮБОЙ попытки POST локального хоста, но я вижу эти тестовые GET, как если бы Firefox даже по какой-то странной причине не пытайтесь отправить POST на локальный http. Так что, может быть, я где-то делаю ошибку - почему, черт возьми, GET работает, а POST даже не отправляет эти старые версии FF?
Любая подсказка будет приятной.