2012-05-31 178 views
9

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

任何人都可以阐明为什么Ext.Ajax发送一个OPTIONS请求,有没有办法让它发送一个GET?

感谢

+0

我的问题呢!任何运气找到解决方案? @ CL4NCY – Ocelot

回答

11

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

根据the docs

设为false不发送默认XHR头(X-要求-含)的每个请求。在制作CORS(跨域)请求时,这应该设置为false。

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

5

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'); 
        } 
       });