我正在使用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验证):
答案 0 :(得分:1)
我建议您使用Ext.data.JsonP.request而不是Ext.Ajax.request。
根据wiki定义的JSONP
是Web开发人员用来克服跨域的技术 浏览器限制的同源策略所施加的限制 访问从页面之外的原点检索的资源
服务
答案 1 :(得分:0)
我相信您已经知道JavaScript区分大小写;但你知道Headers也是吗?
浏览器正确指出Access-Control-Allow-Origin
不是*
,因为Access-Control-Allow-Origin
和access-control-allow-origin
是两个不同的标头 - 其中只有一个是有效的CORS标头。< / p>
答案 2 :(得分:0)
我们解决了这个问题:
安装了corsEverywhere firefox插件来模拟已接受的cors,以便我们可以比较有/无模拟的设置:
未在服务器上设置Access-Control-Allow-Credentials true。 (cookie认证)
作品