Como negar uma solicitação CORS

4

Quando um cabeçalho Access-Control-Allow-Origin HTTP está ausente na resposta a uma simulação do CORS (compartilhamento de recursos de origem cruzada), isso significa:

  • O servidor não suporta o CORS? Ou
  • O servidor nega o acesso?

Se o servidor não suportar o CORS, parece óbvio que o cabeçalho estará ausente.

Mas se ele suporta CORS, significa que o acesso é negado?

E, inversamente, o que um servidor que implementa o CORS deve fazer para anunciar ao cliente que o acesso é negado por causa do CORS? Deve responder com um status como 403 Forbidden ?

Todas as fontes que encontrei explicam quais cabeçalhos são adicionados para permitir o acesso entre domínios, mas não explicam o que fazer para negar o acesso.

** Editar: pergunta indevida, é ruim, veja a explicação abaixo **

O foco da minha pergunta parece fora do tópico comparado ao que eu esperava. De fato, uma resposta está focada na configuração do servidor, mas o que foi interessante para mim foi o protocolo sobre HTTP.

Para ser mais preciso, fiz a pergunta porque tentei acessar um servidor com uma solicitação cruzada e:

  • O servidor não estava incluindo os cabeçalhos do CORS enquanto meu XMLHttpRequest os incluía
  • o navegador aceitou solicitações cruzadas feitas por um swf media
  • Eu verifiquei o referenciador da mídia e seu iframe era realmente diferente do destino das solicitações
  • Eu nem sabia se o servidor implementou o CORS ou não
  • Eu não possuo o servidor

Meu baixo nível de compreensão do CORS dentro do HTTP e o fato de um tipo de requisições cruzadas serem aceitas me levam a pensar se o servidor estava rejeitando meus pedidos e o que eu estava fazendo de errado.

Vou postar uma resposta, já que acredito ter resolvido isso desde então.

    
por Link-akro 26.01.2016 / 10:14

2 respostas

3

O acesso entre domínios é negado por padrão, enquanto é considerado um risco de segurança. Para negar o acesso, você precisa remover a configuração que permite chamadas entre domínios.

A nova instalação do servidor web não permite o CORS pronto para uso, pelo menos para o IIS, que usei recentemente.

Verifique como (não) configurar servidores da web diferentes para (negar) permitir CORS: link

    
por 26.01.2016 / 10:28
0

Como @mimo disse,

Cross domain access is denied by default

então não há nada para desativar o CORS. Ele responde bem à pergunta original.

Como a edição explica, fiquei confuso em parte porque um objeto SWF em algum lugar estava fazendo um domínio cruzado enquanto XMLHttpRequest do mesmo domínio era rejeitado. Solução: o SWF não está vinculado a políticas XHR (SOP (mesma origem) ou CORS). Isso significa que não houve nenhum problema no experimento que me fez fazer a pergunta: o servidor não implementou o CORS e a mídia na página não o estava usando enquanto o XHR estava usando o CORS e estava falhando.

    
por 24.02.2016 / 22:57

Tags