javascript - origin - ¿Detecta el soporte del navegador para XMLHttpRequests entre dominios?
xmlhttprequest access control allow origin (4)
De acuerdo con http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/ , debería poder usar:
if (''withCredentials'' in new XMLHttpRequest()) {
/* supports cross-domain requests */
}
(Nota: hay un comentario en esa página de que Chrome 2 falla esta prueba [aunque admite solicitudes entre dominios]. Probé Chrome 3 y la prueba ahora está pasando).
Tenga en cuenta que el hecho de que el navegador admita la API entre dominios no significa que el servidor de destino permita completar la solicitud.
Estoy trabajando en un Javascript que hace uso de la capacidad de Firefox 3.5 para realizar XMLHttpRequests entre dominios ... Pero me gustaría fallar con elegancia si no son compatibles.
Además de realizar una solicitud entre dominios, ¿hay alguna forma de detectar el soporte de un navegador para ellos?
Es posible que desee ver EasyXDM , que ajusta las peculiaridades entre navegadores y proporciona una API fácil de usar para comunicarse en el script del cliente entre diferentes dominios utilizando el mejor mecanismo disponible para ese navegador (por ejemplo, postMessage si está disponible, otros mecanismos si no) .
Claramente, esa biblioteca ha resuelto el problema de detección de capacidades del navegador, por lo que puede beneficiarse de su experiencia. :-)
IE8 también tiene el objeto XDomainRequest que se puede usar para recuperar RSS como texto que luego se puede analizar en DOM.
Para referencia futura, la detección completa de la función CORS debería tener un aspecto similar a este:
//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!");
}
Puedes probar esta prueba en vivo usando JSBin y ver la respuesta adecuada en IE, Firefox, Chrome, Safari y Opera.
Existen algunos casos límite en entornos que no son de navegador que admiten XHR entre dominios pero no XHR2 / CORS. Esta prueba no tiene en cuenta esas situaciones.