Pergunta

Eu estou trabalhando em algum Javascript que faz uso da capacidade do Firefox 3.5 para executar XMLHttpRequests de domínio cruzado ... Mas eu gostaria de falhar normalmente se eles não são suportadas.

Além de realmente fazer uma solicitação de domínio cruzado, há alguma maneira de detectar o apoio de um navegador para eles?

Foi útil?

Solução

Para referência futura, CORS completos recurso de detecção deve ser algo como isto:

//Detect browser support for CORS
if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
    document.write("CORS supported (XHR)");
}
else if(typeof XDomainRequest !== "undefined"){
  //Use IE-specific "CORS" code with XDR
  document.write("CORS supported (XDR)");
}else{
  //Time to retreat with a fallback or polyfill
  document.write("No CORS Support!");
}

Você pode tentar este teste ao vivo usando JSBin e ver a resposta adequada no IE, Firefox, Chrome, Safari e Ópera.

Existem alguns casos de ponta em ambientes não-browser que fazer suporte cross-domain XHR, mas não XHR2 / CORS. Este teste não conta para essas situações.

Outras dicas

De acordo com a http://hacks.mozilla.org / 2009/07 / cross-site-xmlhttprequest-com-coros / você deve ser capaz de usar:

if ('withCredentials' in new XMLHttpRequest()) {
    /* supports cross-domain requests */
}

(Nota:.. Há um comentário nessa página que o Chrome 2 falhar este teste [embora não solicitações entre domínios de apoio] Eu testei Chrome 3 e o teste agora está passando)

Tenha em mente que só porque o navegador pode suportar o API cross-domain não significa o servidor de destino vai permitir que o pedido para ser concluído.

Você pode querer olhar em EasyXDM , que envolve peculiaridades cross-browser e fornece um uso para fácil de API para a comunicação no script de cliente entre diferentes domínios usando o melhor mecanismo disponível para esse navegador (por exemplo postMessage se possível, outros mecanismos se não).

É claro que a biblioteca tem resolvido o problema de detecção do navegador-capacidades, para que possa beneficiar da sua experiência. : -)

IE8 também tem XDomainRequest objeto que pode ser usado para recuperar RSS como texto que podem ser posteriormente analisado em DOM.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top