当jQuery.ajax发送GET时,Ext.Ajax.request发送OPTIONS请求跨域

时间:2012-05-31 08:55:26

标签: javascript jquery ajax sencha-touch

我有一个Sencha Touch应用程序使用Ext.Ajax.request调用我的Web服务跨域。由于我构建了Web服务,因此我已启用它来访问跨域请求。然而,Ext首先发送OPTIONS请求作为握手然后发送GET请求,而jQuery.ajax只发送一个GET请求。由于我无法控制的情况,托管服务提供商不支持OPTIONS请求。目前,我已经使用jQuery进行ajax请求,并使用Sencha Touch进行应用程序的其余部分。我真的不想为此加载jQuery库。

有人能说清楚为什么Ext.Ajax会发送一个OPTIONS请求吗?有没有办法让它发送一个GET?

由于

3 个答案:

答案 0 :(得分:11)

Ext.Ajax.request配置中,将useDefaultXhrHeader设置为false。这将阻止额外的OPTIONS请求。

根据the docs

  

将此值设置为false,以便不向每个请求发送默认的Xhr标头(X-Requested-With)。在进行CORS(跨域)请求时,应将其设置为false。

我的经验是OPTIONS调用消失了,我得到了我预期的POST动词。

答案 1 :(得分:5)

设置

Ext.Ajax.useDefaultXhrHeader = false

之前

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

答案 2 :(得分: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');
                    }
                });
相关问题