2012-05-31 2 views
9

У меня есть приложение Sencha Touch, вызывающее межсетевой веб-сервис с помощью Ext.Ajax.request. Поскольку я создал веб-службу, я разрешил ей получать доступ к междоменным запросам. Однако Ext отправляет запрос OPTIONS сначала как рукопожатие, затем запрос GET, тогда как jQuery.ajax просто отправляет запрос GET. Из-за не зависящих от меня обстоятельств хостинг-провайдер не поддерживает запросы OPTIONS. На данный момент я прибегал к использованию jQuery для запросов ajax и Sencha Touch для остальной части приложения. Я действительно не хочу загружать библиотеку jQuery только для этого.Ext.Ajax.request отправляет запрос опций кросс-домена, когда jQuery.ajax отправляет GET

Может ли кто-нибудь пролить свет на то, почему Ext.Ajax отправляет запрос OPTIONS и есть способ сделать его просто отправить GET?

Благодаря

+0

мою проблему тоже! любая удача найти решение? @ CL4NCY – Ocelot

ответ

11

В Ext.Ajax.request конфигурации, установите useDefaultXhrHeader ложь. Это предотвратит дополнительный запрос OPTIONS.

По the docs:

Установить это ложь, чтобы не посылать хедер XHR по умолчанию (X-Requested-With) при каждом запросе. При выполнении запросов CORS (междоменного) это должно быть установлено false.

Мой опыт в том, что вызов OPTIONS исчез, я получил ожидаемый глагол POST.

5

Set

Ext.Ajax.useDefaultXhrHeader = false

Перед

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

Или вы можете установить с помощью метода так:

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'); 
        } 
       }); 
Смежные вопросы