336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

spring에서 interceptor를 이용해서..

세션 체크를 하고 세션이 끊기면 로그인 화면으로..

리다이렉트 시키려고 했다..

그런데 하다보니.. ajax 요청일땐..

리다이렉트가 되지 않고, ajax가 원하는걸 받지 못하니까

error가 발생하는것이다..

 

(추후에.. interceptor 관련해서는 좀 더 정리해서 포스팅 해보도록 하겠습니다!)

 

그래서 이를 해결하기위해서는..

내가 요청받은 놈이 ajax인지 아닌지를 확인해야 겠다는 생각이 들었다.

 

알아본 걸로는 2가지 정도가 있다.

 

첫번째 방법으로는,

ajax 요청은 헤더에

x-requested-with 라는 키로 XMLHttpRequest 값을 가지고 있다고 합니다.

그렇기에 자바단에서 HttpServletRequest reuqest 에서 다음과 같이 헤더를 확인해보면,

 

 

ajax 요청인지 아닌지 알수 있습니다.

간략하게 설명드리면 request 헤더에서 x-requested-with 라는 키를 가지는 놈의 값이

XMLHttpRequest 이냐 인지를 물어 맞으면 ajax 아니면 ajax 요청이 아니라고 보시면 될 것 같습니다.

 

 

두번째 방법으로는,

마찬가지로 ajax요청의 헤더를 이용하는 것인데,

위에 있는 ajax요청이 헤더에 갖고 있는 x-requested-with 이 녀석을 모른다면,

임의로 ajax요청시에 헤더에 키, 값을 넣어서 요청을 보내는 것입니다.

ajax 요청하는 jquery를 보면 다음과 같습니다.

 

 

그 중에서 beforeSend라는 함수가 있습니다.

이녀석은 이제 요청 보내기 직전에 사용 되는 함수 인데,

위에 처럼 setReuqestHeader 함수를 통해 AJAX 라는 키에 true라는 값을 주었습니다.

그 다음 자바단에서 위에서 헤더를 확인것과 같이,

 

 

이렇게 ajax요청이신지 확인하실 수 있습니다.

두번째 방법은 내가 원하는 대로 키, 값을 주어 내가 알기 쉽게 할 수 있다는 장점이 있는 것 같습니다.

 

쨋든!!

이와 같이 둘 중에 한가지 방법으로 ajax요청인지 아닌지 사용하셔서 도움이 되셨으면 좋겠습니다!ㅎ

 

+ Recent posts