【问题标题】:Ext.Ajax.request sending OPTIONS request cross-domain when jQuery.ajax sends GETExt.Ajax.request 在jQuery.ajax 发送GET 时发送OPTIONS 请求跨域
【发布时间】:2012-06-05 12:25:11
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 我的问题也是!任何运气找到解决方案? @CL4NCY

标签: javascript jquery ajax sencha-touch


【解决方案1】:

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

根据the docs

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

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

【讨论】:

    【解决方案2】:

    设置

    Ext.Ajax.useDefaultXhrHeader = false

    之前

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

    【讨论】:

      【解决方案3】:

      或者你可以用这样的方法设置:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-25
        • 2015-04-24
        • 1970-01-01
        • 2019-02-11
        • 2015-04-22
        • 1970-01-01
        • 2015-07-10
        • 2012-12-04
        相关资源
        最近更新 更多