Вызовы API POST REST не работают в браузере Chrome, но работают в браузере IE - PullRequest
0 голосов
/ 11 февраля 2019

У нас есть веб-приложение, для которого пользовательский интерфейс размещается на одном сервере Apache на одном хосте, а внутренняя служба API REST размещается на сервере tomcat на другом хосте.Для пользовательского интерфейса: используется Node.js и он размещен на Apache. Для API: Java 8 используется Spring REST, а файл war размещается на tomcat 8.5.32

Проблема:

Хотяпри использовании браузера Chrome (версия: 71.0.3578.80) для всех вызовов API POST сервер отвечает кодом ошибки 403 (запрещено), но для браузера IE (версия 11.0.105) те же API-интерфейсы POST возвращают ответ со статусом 200 (успех).Вышеуказанное поведение наблюдается для всех запросов POST.

Ниже приведены заголовки запросов и ответов для браузера Chrome:

Заголовки запросов:

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 6559
Content-Type: application/json
Cookie: <cookies>
Host: <myhost>.com
Origin: https://<myhost>.com
Referer: https://<myhost>.com/beta/
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36

Заголовки ответов:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://<myhost>.com
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/plain
Date: Mon, 11 Feb 2019 11:49:25 GMT
Keep-Alive: timeout=5, max=95
Server: Apache
Strict-Transport-Security: max-age=31536000

Общие сведения о вызове API:

Request URL: https://<myhost>.com/services/v1/settings
Request Method: POST
Status Code: 403 
Remote Address: <ip address>:443
Referrer Policy: no-referrer-when-downgrade

Запрос полезной нагрузки:

{"userId":"test", "someFlag": "someValue"}

Не могли бы вы помочь понять, что мне не хватает в вышеуказанных заголовках?

Выводы:

Если мы вернемся к версии 8.5.29 tomcat с версии 8.5.32, то вызовы POST API будут работать нормально во всех браузерах.

Я также обнаружил, что исправлено для Tomcat 8.5.32 до https://tomcat.apache.org/security-8.html#Fixed_in_Apache_Tomcat_8.5.32: Низкий: фильтр CORS имеет небезопасные значения по умолчанию CVE-2018-8014 , которые могут вызывать эту проблемуно я не могу понять точную проблему и какие изменения заголовков я должен сделать, чтобы заставить этот запрос POST работать в браузерах Chrome.

...