*
agora é um valor válido para Access-Control-Allow-Headers
, pelo menos para solicitações não credenciadas; mas como essa é uma recente adição à especificação , ela provavelmente ainda não alcançou os navegadores.
Eu quero configurar o meu Apache 2.4 para servir alguns recursos estáticos de uma maneira amigável ao CORS. Eu já tenho a seguinte configuração:
Header always set Access-Control-Allow-Origin "*"
No entanto, para o Safari recente, isso parece não ser suficiente:
[Error] Failed to load resource: Request header field … is not allowed by
Access-Control-Allow-Headers
.
Os campos mencionados desta maneira incluem Accept-Encoding
e DNT
, mas acho que depois de adicioná-los eu também posso ver Cache-Control
, Origin
e Accept-Language
, já que esses são os mencionados em Access-Control-Request-Headers
cabeçalho enviado pelo Safari. Mas quem vai me dizer que outros cabeçalhos o Safari ou algum outro navegador pode estar solicitando, agora ou no futuro, para mim ou para algum outro usuário com uma configuração diferente? Aparentemente *
não é uma configuração válida para o cabeçalho Access-Control-Allow-Headers
, por razões que eu realmente não entendo.
Então, como eu configuro um servidor para apenas dizer "use esses recursos em qualquer lugar, não me importo com o CORS para eles"?
*
agora é um valor válido para Access-Control-Allow-Headers
, pelo menos para solicitações não credenciadas; mas como essa é uma recente adição à especificação , ela provavelmente ainda não alcançou os navegadores.
Uma solução que descobri é que, em vez de adicionar cabeçalhos explicitamente, você pode simplesmente repetir todos os cabeçalhos solicitados de volta para o navegador. Essa abordagem foi sugerida aqui no Stack Overflow , mas essa postagem não forneceu uma configuração estática para isso.
Depois de ler a documentação em Header
e expressões Consegui isso usando a seguinte linha:
Header always set Access-Control-Allow-Headers "expr=%{req:Access-Control-Request-Headers}"
Não tenho certeza sobre as implicações de segurança que isso pode ter, portanto, use a seu próprio risco, como de costume.