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.
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.