extjs 6.01的原始问题

时间:2016-06-02 21:13:05

标签: ajax extjs cors

我正在使用POST表单登录我的后端,这没有任何问题。后端接受所有位置(*)

登录后,我已准备好获取一些数据,然后我阻止了Cross-Origin请求:同源策略不允许使用backend.test / Statistics / .stat(原因:CORS-header'Access -Control-Allow-Origin'不会与'*'对抗。

    onLoginClick: function(buttons){

    // this.onLoginSuccess(null,null);
    // return;

        var me = this;
        var loginForm = this.lookupReference('loginForm');
        loginForm.submit({
            url: this.url,
            scope: this,
            success: me.onLoginSuccess,
            failure: me.onLoginFailure,
            waitMsg: 'Validating...'
        });
},

    onLoginSuccess: function (form, action) {

        var me = this;

            // destroy login window (form)
                me.getView().destroy();

        var check =     Ext.Ajax.request({
                        url     : 'http://thebackend.test/Statistics/.stat',
                        scope   : this,
                        withCredentials: true,
                        useDefaultXhrHeader: false,
                        cors: true,
                        params: {
                        entity: 'EmployeePid',
                        action: 'lst'
                    },
                        failure : function(response) {
                            console.log('failure is hit');
                        },
                        success : function(response) {

                        }
                    });

                console.log(check);
   }, ...

但是,当我使用firefox POSTER并模拟调用时,一切正常:没有交叉原点问题 - 使用完全正确!相同的参数(用HttpFox验证):

enter image description here

3 个答案:

答案 0 :(得分:1)

我建议您使用Ext.data.JsonP.request而不是Ext.Ajax.request。

根据wiki定义的JSONP

  

是Web开发人员用来克服跨域的技术   浏览器限制的同源策略所施加的限制   访问从页面之外的原点检索的资源   

服务

Here is the documentation

答案 1 :(得分:0)

我相信您已经知道JavaScript区分大小写;但你知道Headers也是吗?

浏览器正确指出Access-Control-Allow-Origin不是*,因为Access-Control-Allow-Originaccess-control-allow-origin是两个不同的标头 - 其中只有一个是有效的CORS标头。< / p>

答案 2 :(得分:0)

我们解决了这个问题:

  • 安装了corsEverywhere firefox插件来模拟已接受的cors,以便我们可以比较有/无模拟的设置:

  • 未在服务器上设置Access-Control-Allow-Credentials true。 (cookie认证)

  • 服务器(Microsoft-IIS / 7.5)不喜欢*所以我们设置了远程站点名称
  • 删除尾随/在网站名称

作品