디스 프로그래머 (This Programmer)

리다이렉션한 횟수가 너무 많습니다 본문

Topic

리다이렉션한 횟수가 너무 많습니다

디스 프로그래머 2019. 6. 29. 00:54

리다이렉션한 횟수가 너무 많습니다

가끔씩 뭔가 뚜렷한 전조증상 없이 이 에러가 뜨는 경우가 있는데 이유는 서버에서 링크이동이 반복해서 이뤄지게 됐을 때 브라우저가 임의로 이 에러를 일으키는 것이다. 예를 들어 localhost라는 주소에 들어갔을 때 해당 웹페이지에 localhost/move로 리다이렉션시키는 스크립트가 짜여져 있고, localhost/move라는 곳으로 이동했을 때 localhost로 다시 리다이렉션시키는 스크립트가 있다면 이 오류가 뜨게 된다.


 내가 이 오류를 만났을 땐 다음과 같은 상황이었다. django로 프로젝트를 제작하던 도중 로그인이 된 상태이거나 로그인을 성공하면 redirect_to라는 GET키값의 밸류값으로 이동시키거나 혹은 home으로 이동시켜야 했는데 request에 뭐가 담겼는지 확인하기 위해 계속 다시 login페이지로 리다이렉션을 하는 코드를 짜놨었다. 상식적으로 생각했을 때 로그인된 상태면 login페이지가 또 보이지 않아야하므로 다른 페이지로 이동시켰어야 했는데 위에도 말했다시피 request에 담긴 값을 확인하기 위해 계속 login페이지를 불러오게 만든 것이다. 그렇게 계속해서 login페이지를 호출하는 로직이 완성되자(login이 된 상태면 login페이지를 불러온다 * ∞) 내 브라우저는 "리다이렉션한 횟수가 너무 많습니다"라는 오류를 뱉음으로서 서버에 대한 무한 리다이렉션을 방지시켜줬다.


 한번은 워드프레스로 작업했을 때였는데 ssl을 적용하는 과정이었다. 워드프레스는 엔진 특성상 루트 url을 db에 저장해놓고 작동하는데 ssl을 적용하고 나서 db에 있는 url을 바꾸지 않았더니 ssl로 인해 웹서버가 계속 클라이언트의 요청을 https가 달려있는 url로 보내려고 하고, 워드프레스 엔진은 요청을 db에 저장돼있는 url인 http로 보내려고 해서 서로 각축이 일어났었는데 그때 바로 또 "리다이렉션한 횟수가 너무 많습니다"라는 오류가 출력됐다.


 브라우저에서 제공하는 일종의 보호장치라고 생각하면 될 것이다. 해당 문제에 부딪혔을 때는 해당 현상이 발생한 페이지에서 redirect하는 부분을 주의깊게 살펴보면 해결이 가능할 것이다. 그 어떤 언어나 프레임워크로 짜여진 웹이라고 해도 위 문제는 브라우저에서 저 문장만 덩그러니 나오기 때문에 디버깅하는 데 당황할 수 있다. 당황하지 말고 리다이렉션에 관한 부분만 주의깊게 생각해보면 해결될 것이다.

0 Comments
댓글쓰기 폼