Quero configurar meu Apache 2.4 para atender alguns recursos estáticos de maneira compatível com o CORS. 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:
[Erro] Falha ao carregar o recurso: o campo do cabeçalho da solicitação... não é permitido por
Access-Control-Allow-Headers
.
Os campos mencionados dessa maneira incluem Accept-Encoding
e DNT
, mas acho que depois de adicioná-los também posso estar vendo Cache-Control
, Origin
e Accept-Language
, já que esses são os mencionados no Access-Control-Request-Headers
cabeçalho enviado pelo Safari. Mas quem pode me dizer quais 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 Access-Control-Allow-Headers
cabeçalho, por motivos que realmente não entendo.
Então, como configuro um servidor para apenas dizer “use esses recursos em qualquer lugar, não me importo com CORS para eles”?
*
agora é um valor válido paraAccess-Control-Allow-Headers
pelo menos para solicitações não credenciadas; mas como esta é uma adição bastante recente à especificação , provavelmente ainda não chegou aos navegadores.Uma solução que encontrei é que, em vez de adicionar cabeçalhos explicitamente, você pode apenas ecoar todos os cabeçalhos solicitados de volta ao 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
Header
e as expressões , consegui isso usando a seguinte linha:Não tenho certeza sobre as implicações de segurança que isso pode ter, então use por sua conta e risco, como de costume.