2012-05-31 9 views
9

Tengo una aplicación Sencha Touch llamando a mi servicio web entre dominios utilizando Ext.Ajax.request. A medida que construí el servicio web, lo habilité para acceder a solicitudes entre dominios. Sin embargo, Ext envía primero una solicitud OPTIONS como un apretón de manos y luego una solicitud GET, mientras que jQuery.ajax solo envía una solicitud GET. Debido a circunstancias fuera de mi control, el proveedor de hosting no admite las solicitudes OPTIONS. Por el momento, he recurrido al uso de jQuery para solicitudes ajax y Sencha Touch para el resto de la aplicación. Realmente no quiero tener que cargar la biblioteca jQuery solo para esto.Solicitud de Ext.Ajax.request OPCIONES de dominio cruzado cuando jQuery.ajax envía GET

¿Alguien puede arrojar algo de luz sobre por qué Ext.Ajax envía una solicitud de OPCIONES y hay una manera de hacerlo simplemente enviar un GET?

Gracias

+0

mi problema también! ¿Alguna suerte para encontrar la solución? @ CL4NCY – Ocelot

Respuesta

11

En el Ext.Ajax.request config, establecen useDefaultXhrHeader a falso. Esto evitará la solicitud de OPCIONES adicionales.

Según the docs:

Set esta en false para no enviar la cabecera XHR predeterminado (X-Requested-With) con cada petición. Esto debe establecerse en falso al hacer solicitudes CORS (dominio cruzado).

Mi experiencia es que la llamada OPTIONS desapareció, obtuve el verbo POST que esperaba.

5

Conjunto

Ext.Ajax.useDefaultXhrHeader = false

Antes

Ext.Ajax.request({ 
     url: 'www.yourUrl.com', 
     ..... 
    }); 
2

o puede establecer con el método de la siguiente manera:

Ext.Ajax.setUseDefaultXhrHeader(false); 
Ext.Ajax.request({ 
        url: "http://yoururl.domain", 
        success: function(response, eOpt) { 
         console.log('success'); 
        }, 
        failure: function(response, eOpt) { 
         console.log('error'); 
        } 
       }); 
Cuestiones relacionadas