Chrome позволяет ajax переходить на http иностранного происхождения, где firefox нет - почему? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть JSP с кодом javascript, работающим на сервере с HTTPS. В этом JavaScript я запускаю запрос к другому (локальному) веб-серверу следующим образом:

let url = 'http:/localhost:3111/doSomePost';
      $.ajax({
        type: 'POST',
        url: url,
        contentType: 'application/octet-stream',
        processData: false,
        data: uint8array
    })

Для этого необходимо, чтобы CrossOrigin был включен на локальном веб-сервере для работы - я настроил эта часть и она работает.

Но она работает только в Chrome. Не в Firefox.

Firefox выдаст мне эту ошибку:

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса на http://localhost: 3111 / doSomePost . (Причина: запрос CORS не был выполнен).

Я вижу на вкладке сети firefox devtools, что firefox даже не удосуживается отправить предварительный запрос (запрос OPTIONS) , Поэтому Firefox просто решает, что не отправит этот запрос (и я подозреваю, что это потому, что протокол локального веб-сервера - HTTP).

Теперь я изменил свой локальный веб-сервер на использование HTTPS с использованием самозаверяющего сертификата, как описано здесь: https://www.baeldung.com/spring-boot-https-self-signed-certificate

Теперь он работает в Firefox и Chrome (после того, как я вручную добавлю недействительный сертификат).

Мне просто интересно, почему chrome не имеет проблем, но firefox делает.

ОБНОВЛЕНИЕ: исправлено незначительная опечатка в сообщении об ошибке

1 Ответ

0 голосов
/ 20 февраля 2020

Мне удалось найти лучшее решение. Вместо того, чтобы переключать локальный веб-сервер на HTTPS, чтобы заставить firefox работать, я изменил вышеупомянутый запрос на:

let url = 'http:/localhost:3111/doSomePost';
      $.ajax({
        type: 'POST',
        url: url,
        data: jsonWithBase64encodedData
    })

Это теперь квалифицируется как так называемый "Простой запрос" (https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS ) и обрабатывается аналогичным и, что наиболее важно, рабочим способом во всех браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...