Estou tentando fazer uma solicitação HTTP de domínio cruzado para o serviço WCF (de minha propriedade). Eu li várias técnicas para trabalhar com as limitações de script entre domínios. Como meu serviço deve acomodar solicitações GET e POST, não posso implementar alguma tag de script dinâmico cujo src é a URL de uma solicitação GET. Como estou livre para fazer alterações no servidor, comecei a tentar implementar uma solução alternativa que envolve a configuração das respostas do servidor para incluir o cabeçalho "Access-Control-Allow-Origin" e solicitações de 'comprovação' com uma solicitação OPTIONS. Tive a ideia deste post: Fazendo o CORS funcionar
No lado do servidor, meu método da web está adicionando 'Access-Control-Allow-Origin: *' à resposta HTTP. Posso ver que as respostas incluem este cabeçalho agora. Minha pergunta é: Como faço para 'comprovar' uma solicitação (OPÇÕES)? Estou usando jQuery.getJSON para fazer a solicitação GET, mas o navegador cancela a solicitação imediatamente com o infame:
Origem http: // localhost não é permitido por Access-Control-Allow-Origin
Alguém está familiarizado com essa técnica CORS? Que mudanças precisam ser feitas no cliente para comprovar minha solicitação?
Obrigado!
fonte
Access-Control-Allow-Origin: *
//cors and preflight filtering app.all('*', function(req, res, next){.. //preflight needs to return exact request-header res.set('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); if ('OPTIONS' == req.method) return res.send(204);next(); });
Embora essa discussão remonte a 2014, o problema ainda pode ser atual para muitos de nós. Aqui está como eu lidei com isso em um contexto jQuery 1.12 / PHP 5.6:
Amostra de código PHP:
Em particular, não adicione um,
exit;
pois nenhum preflight é necessário.fonte