16

Tengo un código que usa el objeto XDomainRequest de Microsoft en IE8. El código es el siguiente:¿Se puede hacer que XDomainRequest funcione con SSL?

var url = "http://<host>/api/acquire?<query string>"; 
var xdr = new XDomainRequest(); 
xdr.onload = function(){ 
    $.("#identifier").text(xdr.responseText); 
}; 
xdr.open("GET", url); 
xdr.send(); 

Cuando el esquema de "url" es "http: //" el comando funciona bien. Sin embargo, cuando el esquema es "https: //" IE8 me da un error de JavaScript "Acceso denegado". Ambos esquemas funcionan bien en FF 3.6.3, donde estoy, por supuesto, usando XmlHttpRequest. Con ambos buscadores estoy cumpliendo con el control de acceso W3C. "http: //" funciona en origen cruzado para ambos navegadores. Entonces, el problema es con IE8, XDomainRequest y SSL.

El certificado SSL no es el problema. Si escribo https: // <host>/en la barra de direcciones de IE8, donde <host> es el mismo que en "url", la página se carga bien.

Tenemos lo siguiente:
- presionando https: // <host>/directamente desde el navegador funciona bien;
- presionando https: // <host>/api/acquire? <query string> mediante XDomainRequest no está permitido.

¿Se puede hacer? ¿Estoy dejando algo afuera?

Respuesta

18

Al parecer, la respuesta está aquí: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

punto 7 en esta página dice: "Las solicitudes deben dirigirse al mismo esquema que la página de alojamiento."

Aquí es parte del texto de apoyo para el punto 7:

"Definitivamente fue nuestra intención de evitar que las páginas HTTPS de hacer XDomainRequests de recursos basados ​​en HTTP, como el escenario presenta un Seguridad contenido mixto amenaza la cual muchos desarrolladores y la mayoría de los usuarios no entienden .

sin embargo, esta restricción es demasiado amplia, ya que evita HTTP páginas de emitir XDomainRequests dirigidos a páginas HTTPS. Si bien es cierto t Si la página HTTP en sí misma puede haberse visto comprometida, no existe un motivo por el que esté prohibido recibir recursos públicos de forma segura ".

Parece que en este momento la respuesta a mi pregunta original es: SÍ, si la página de alojamiento puede usar el esquema "https: //"; NO, si no puede.

+1

Estoy teniendo problemas con las solicitudes XDR a las URL https, incluso cuando la página de alojamiento también se sirve a través de https (y el dominio solicitado es un subdominio de la página de alojamiento). Funciona cuando uso http para ambos, sin embargo. – broofa

+1

Yo tampoco he tenido suerte con XDR usando https, incluso cuando la página solicitante también es https. Simplemente desencadena el evento 'onerror' (una devolución de llamada que útilmente se le da información cero). Me estoy comunicando entre dos hosts virtuales en mi computadora de desarrollo y he empezado a preguntarme si eso tiene algo que ver con eso (¿certificado autofirmado?). –

+0

@SethBro Sí, también me pregunto sobre un certificado autofirmado en un proyecto en el que estoy trabajando actualmente. – the0ther

Cuestiones relacionadas