티스토리 뷰

728x90
반응형

 

응답에 시간이 많이 소요되는 로직을 구현하다 보면 서버에서 지정한 시간에 따라 타임아웃 에러가 발생한다.

 

그런데 이런 경우 다소 황당하게도 클라이언트 로그를 확인하면 CORS 에러가 함께 뜨는데,

 

처음에는 순서를 잘못 파악하고 CORS 때문에 타임아웃이 뜨는 거라고 생각해 시간을 제법 잡아먹었다.

 

결론부터 말하자면,

 

서버가 정상적인 응답을 보내지 못한 경우 클라이언트에게 필요한 CORS 헤더 역시 전송되지 않을 수 있으며,

 

이 때문에 타임아웃과 CORS 에러가 동시에 뜨는 것이다.

 

조금 더 풀어서 설명하자면, CORS는 일종의 보안 정책인 동일 출처 정책(Same Origin Policy)을 위반하는 경우 발생한다.

 

이 제한을 우회하기 위해서는 서버에 설정된 올바른 출처에서 허용된 요청만 보내야 하는데,

 

이때 서버는 요청을 보낸 출처와 요청 메서드를 확인하고

 

해당 요청이 올바른 CORS 요청인지 그렇지 않은지를 응답 헤더에 담아 클라이언트에 제공해야 한다.

 

하지만 타임아웃이 발생해 서버가 정해진 시간안에 응답(구체적으로는 위에서 언급한 헤더)을 보내지 못하는 경우,

 

클라이언트는 필요한 헤더를 수신하지 못했다고 판단, CORS 에러를 발생시키게 되는 것이다.

 

따라서 문제의 원인이 되는 타임아웃을 해결하면 CORS 에러까지 함께 해결될 가능성이 높다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함