Extjs 6 + Spring Rest:401 错误的空响应
Posted
技术标签:
【中文标题】Extjs 6 + Spring Rest:401 错误的空响应【英文标题】:Extjs 6 + Spring Rest : Empty response for 401 error 【发布时间】:2017-10-20 02:50:59 【问题描述】:当我发出 CORS 请求并且服务器返回 401 代码作为响应时,我无法获得任何有价值的响应信息(状态 = 0,responseText 为空)。
在 extjs 方面,我使用带有重写方法的 rest 代理:
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]);
,
我得到的只有success = false和空响应。
在后端我还有一个 spring 身份验证过滤器:当我在过滤器中抛出身份验证异常时,我得到空响应,但是当我从控制器返回 ResponseEntity 和任何代码时,我得到有价值的响应。
我必须做些什么才能获得至少一个错误代码?
【问题讨论】:
【参考方案1】:你如何配置你的cors?
springSecurityFilterChain
很可能放在您的 cors 过滤器之前,因此不会调用 cors 过滤器。
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCorsFilter implements Filter
尝试放置 @Order(Ordered.HIGHEST_PRECEDENCE)
,以便在 springSecurityFilterChain
之前调用 cors 过滤器
【讨论】:
以上是关于Extjs 6 + Spring Rest:401 错误的空响应的主要内容,如果未能解决你的问题,请参考以下文章
使用spring security angular和rest API重新加载页面给我错误401
grails spring security rest status 401重定向到控制器的动作以抛出自定义错误消息
在 grails 应用程序中调用 spring security rest 插件登录时出现 401 未经授权的错误
webpack服务器中的rest API调用(来自角度)返回401