CORS с клиентскими https сертификатами
У меня есть сайт с двумя серверами https. Один (внешний интерфейс) обслуживает пользовательский интерфейс из статических страниц. Другой (бэкэнд) обслуживает микросервис. Оба они используют один и тот же (тестовый) сертификат X509 для идентификации себя. По отдельности я могу подключиться к ним обоим через https, требуя сертификат клиента «тестер».
До сих пор мы скрывали проблемы с CORS, выполняя настройку nginx, которая заставляет внешний и внешний интерфейсы казаться одинаковыми Origin. Я реализовал заголовки «Access-Control-Allow-Origin», «Access-Control-Allow-Credentials» для всех запросов; с методами, заголовками для запросов предварительной проверки (ОПЦИИ).
В Chrome, кросс-сайт, как это работает просто отлично. Я вижу, что внешние и внутренние URL-адреса - это разные сайты. Я вижу запросы OPTIONS, которые выполняются до выполнения запросов бэкэнда.
Хотя в Chrome это не требуется, я нашел объект xmlhttprequest, который будет использоваться для выполнения запроса, и выполнилxhr.withCredentials = true
на это, потому что, кажется, это то, что fetch.js делает под капотом, когда он получает"credentials":"include"
, Я заметил, что естьxhr.setRequestHeader
доступна функция, которая может понадобиться, чтобы сделать Firefox счастливым.
Кто-нибудь здесь использует CORS в сочетании с 2-сторонними SSL-сертификатами, подобным этому, и имел эту проблему с Firefox и где-то ее исправил. Я подозреваю, что это не исправление на стороне сервера, а то, что клиент должен сделать.