2017-05-19 6 views
0

CORS 요청을 만들고 서버가 401 코드를 반환하면 귀중한 응답 정보 (status = 0, responseText가 비어 있음)를 얻을 수 없습니다. 나는 응답이 401 오류 코드와 일부 헤더를 가지고 찾을 수 있습니다 브라우저에서Extjs 6 + Spring Rest : 401 오류에 대한 빈 응답

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]); 

},

(크롬) : extjs라는 측면에서

나는 재정의 방법으로 나머지 프록시를 사용합니다. 하지만 프록시의 다음과 같은 방법 응답 처리하려고하면

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

},

난 단지 성공 = 거짓과 빈 응답을 가지고 있습니다.

또한 백엔드 측에서 스프링 인증 필터가 있습니다. 필터에 인증 예외가 발생하면 응답이 없지만 컨트롤러에서 ResponseEntity를 반환하면 귀중한 응답을받습니다.

적어도 오류 코드를 얻으려면 어떻게해야합니까?

답변

1

어떻게 구성합니까?

springSecurityFilterChain이 cors 필터 앞에 배치되므로 cors 필터가 호출되지 않습니다. @Order(Ordered.HIGHEST_PRECEDENCE)을 배치

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

시도는 그래서 고르 필터는 springSecurityFilterChain

전에 호출됩니다