현재 Spring 을 API서버로 사용하고 있다. Controller의 각 Request Mapping된 로직으로 들어가기 전에, Token을 확인하는 Interceptor를 구현하여 사용하고 있다. Frontend 에서는 javascript가 JQuery의 Ajax로 API 서버에 요청을 보낸다.
// JAVA Interceptor 중 어떤 에러가 발생 되었을때
response.setStatus(401);
return false;
그런데 이럴 경우 해당 response는 text/html 방식으로 프론트에 전달되게 되고,
// javascript
error: function(xhr){
console.log(xhr);
},
Xhr은 Status code가 0으로 찍히게 된다.
이 때 해결 방법은 response의 Header까지 인터셉터 단에서 모두 입력해주어야 하는데
“Access-Control-Allow-Origin” 에 해당 Request를 요청한 곳의 주소가 들어가야 한다.
// New Java Interceptor
response.setStatus(401);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Connection", "close");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
return false;
이렇게 바꿈으로써 해결되었다. 아마 CORS 관련해서 문제가 생긴듯 싶다.
'Developer > 모아두기' 카테고리의 다른 글
Spring + Tomcat http, https 설정 (Java config) (1) | 2017.04.18 |
---|---|
[Linux] Ubuntu net.core.somaxconn 값 변경 (1) | 2016.06.22 |
[uwsgi + nginx] uwsgi unix socket 문제 (1) | 2016.06.22 |
[python] xml parsing 파이썬 (0) | 2016.06.22 |
[Nginx] nginx error – 413 Request Entity Too Large (0) | 2016.06.22 |