2012-01-27 12 views
7

No estoy al tanto de un problema que tengo con una llamada HTTPS Ajax solo en IE. IE parece pensar que estoy haciendo una solicitud de dominios cruzados, pero no lo hago. El siguiente código es llamado desde la página https://mydomain/customer_profile.php:Problemas con HTTPS Solicitud de Ajax en IE (no dominio cruzado)

$.ajax({ 
    type: 'post', 
    url: 'https://mydomain/ajax/retrieve_transaction_details.php', 
    data: /* my data is here */, 
    success: function(response){ 
     // do something with the response 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

Esta solicitud funciona bien en todos los navegadores excepto IE. En IE, la función de error devuelve "Error: acceso denegado". Como dije, estoy completamente perplejo con esto, por lo que cualquier idea o idea sería genial.

+1

Pruébalo sin el 'https: // mydomain'. Por lo tanto, intente con la URL como "/ajax/retrieve_transaction_details.php". –

+0

He intentado esto. Por alguna razón, si no especifico una ruta absoluta, otros navegadores intentan realizar la solicitud a través de HTTP, rompiéndola también en esos. –

+0

Quizás agregue un cheque para los navegadores que seguirán una ruta si usan IE para compatibilidad y si usan cualquier otro navegador luego lo reenvían al código que ya tienen funcionando. – HenryGuy

Respuesta

3

supongo que está utilizando la etiqueta <base> dentro de la cabeza sección del HTML; ¿derecho?

Si apunta a http en lugar de https, que rompería IE.

+0

Guau, eso sería de hecho. Olvidé por completo que había lanzado esa etiqueta en mi plantilla de encabezado. Es gracioso que solo lo rompió en IE, pero supongo que eso es IE para ti. ¡Gracias! –

2

establecer crossdomain en true en su solicitud como esta oportunidad:

$.ajax({ 
    type: 'post', 
    url: 'https://mydomain/ajax/retrieve_transaction_details.php', 
    data: /* my data is here */, 
    crossDomain: true, 
    success: function(response){ 
     // do something with the response 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert(xhr.status); 
     alert(thrownError); 
    } 
}); 

esto debería permitirle realizar la solicitud, independientemente de si se trata de dominios cruzados o no.

+0

Hmm, esto cambió el error a "Sin transporte". Interesante. –

+0

eche un vistazo a esta publicación: http://stackoverflow.com/questions/5241088/jquery-call-to-webservice-returns-no-transport-error –

Cuestiones relacionadas