9

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

谁能解释一下为什么 Ext.Ajax 发送一个 OPTIONS 请求,有没有办法让它只发送一个 GET?

谢谢

4

3 回答 3

11

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

根据文档

将此设置为 false 以不随每个请求发送默认 Xhr 标头 (X-Requested-With)。发出 CORS(跨域)请求时,应将其设置为 false。

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

于 2012-06-06T09:40:52.000 回答
5

Ext.Ajax.useDefaultXhrHeader = false

    Ext.Ajax.request({
        url: 'www.yourUrl.com',
        .....
    });
于 2013-10-15T12:33:25.900 回答
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');
                    }
                });
于 2017-06-08T14:01:21.827 回答