CORS com certificados https do cliente

Eu tenho um site com dois servidores https. Um (front-end) exibe uma interface do usuário feita de páginas estáticas. O outro (back-end) serve um microsserviço. Ambos estão usando o mesmo certificado X509 (teste) para se identificarem. Individualmente, posso conectar-me a ambos por https, exigindo o certificado de cliente "testador".

Estávamos escondendo problemas do CORS até agora, passando por uma configuração nginx que faz com que o front-end e o back-end pareçam ser da mesma origem. Eu implementei os cabeçalhos 'Access-Control-Allow-Origin', 'Access-Control-Allow-Credentials' para todas as solicitações; com métodos, cabeçalhos para solicitações de verificação de comprovação (OPTIONS).

No Chrome, sites como esse funcionam perfeitamente. Percebo que os URLs de front-end e de back-end são sites diferentes. Vejo os pedidos OPTIONS sendo feitos antes que os pedidos de back-end sejam feitos.

Embora o Chrome pareça não precisar dele, encontrei o objeto xmlhttprequest que será usado para executar a solicitação e fiz umaxhr.withCredentials = true nele, porque isso parece ser o que o fetch.js faz sob o capô quando"credentials":"include". Notei que existe umxhr.setRequestHeader função disponível que talvez eu precise usar para deixar o Firefox feliz.

O Firefox se comporta de forma idêntica nas chamadas da interface do usuário. Mas para todas as chamadas de back-end, recebo um 405. Quando isso ocorre, não há conexão de rede sendo feita com o servidor. O navegador decidiu que este é um 405 sem executar nenhuma solicitação https. Embora esse comportamento seja diferente do Chrome, meio que faz sentido. A interface do usuário front-end e o serviço de back-end precisam de um certificado de cliente para ser escolhido. Eu escolhi o certificado "testador" quando me conectei à interface do usuário. Quando se faz uma solicitação de back-end, pode-se assumir que o mesmo certificado de cliente deve ser usado para alcançar o back-end. Mas talvez pressuponha que possa ser diferente, e há algo mais que preciso dizer ao Firefox.

Alguém está aqui usando o CORS em combinação com certificados SSL bidirecionais como este, e teve esse problema do Firefox e o corrigiu em algum lugar. Eu suspeito que não é uma correção do servidor, mas algo que o cliente precisa fazer.

questionAnswers(1)

yourAnswerToTheQuestion