Extjs 6 + Spring Rest:401错误的空响应

时间:2017-05-19 21:17:06

标签: java spring-security cors extjs6 spring-rest

当我发出CORS请求并且服务器返回401代码作为响应时,我无法获得任何有价值的响应信息(status = 0,responseText为空)。

在extjs方面,我使用rest proxy和重写方法:

doRequest : function(request) {
  var me = this,
    requestConfig = request.getConfig();
  requestConfig.cors = true;
  requestConfig.useDefaultXhrHeader = false;
  Ext.Ajax.cors = true;
  Ext.Ajax.useDefaultXhrHeader = false;
  me.callParent([request]);

},

在浏览器(Chrome)中,我发现响应有401错误代码和一些标题。但是,当我尝试使用以下代理方法处理响应时:

processResponse : function(success, operation, request, response) {
  var me = this;
  if (response.status == 401 || response.status == 403) {
    me.handleSecurityError(response);
  } else {
    me.callParent([success, operation, request, response]);
  }

},

我只获得成功=假和空响应。

同样在后端,我有一个spring认证过滤器:当我在过滤器中抛出一个认证异常时,我得到空响应,但是当我从控制器返回任何代码的ResponseEntity时,我得到了有价值的响应。

我需要做些什么才能获得至少一个错误代码?

1 个答案:

答案 0 :(得分:1)

你如何配置你的角色?

最有可能springSecurityFilterChain放在你的角色过滤器之前,因此不会调用cors过滤器。

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCorsFilter implements Filter

尝试放置@Order(Ordered.HIGHEST_PRECEDENCE),以便在springSecurityFilterChain

之前调用cors过滤器