我有一个Sencha Touch应用程序使用Ext.Ajax.request调用我的Web服务跨域。由于我构建了Web服务,因此我已启用它来访问跨域请求。然而,Ext首先发送OPTIONS请求作为握手然后发送GET请求,而jQuery.ajax只发送一个GET请求。由于我无法控制的情况,托管服务提供商不支持OPTIONS请求。目前,我已经使用jQuery进行ajax请求,并使用Sencha Touch进行应用程序的其余部分。我真的不想为此加载jQuery库。
有人能说清楚为什么Ext.Ajax会发送一个OPTIONS请求吗?有没有办法让它发送一个GET?
由于
答案 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');
}
});