크래프톤 정글 2DAY 프록시와 cors
cors 오류 및 해결법
위 오류는 간단하게 설명하면 브라우저 측에서 a라는 url에서 이루어진 HTML과 b라는 URL을 이루는 HTML을 연결하고자 시도할 때 생기는 것이다.
이에 대한 해결방안은 여러가지가 있겠으나, 내가 오류 해결을 위해 채택한 방법은 proxy설정이다.
proxy(프록시)란
북한말로는 대리봉사기
과연 이 친구는 무엇일까?
단순하게 보자면 프록시의 역할이 무언가를 대신 해주는 서버라고 이해하면 된다
그래서 cors오류나 db와 aws가 연결되지 않을 때에 프록시 쪽에 들어가서 처리를 해주면 되는 경우가 있는데 이번에 ssr랜더링에 대해 공부하며 과연 정확히 프록시란 무엇이길래 나같은 초보자가 경험하는 대부분의 오류가 해결되는가라는 의문이 들었다.
프록시의 역할
우선, 프록시의 역할에 대해 나누기 위해서는 대충 이 친구가 무엇이며 종류가 무엇인지에 따라 나누어야한다.
프록시는 클라이언트(유저)와 서버 사이 통신 시 중계자의 역할을 해준다.
또한 클라이언트는 프록시를 서버로 인식하고, 서버는 프록시를 클라언트라고 인식한다. 따라서 위 글에서는 편의상 방향성에 따라 포워드 프록시와 리버스 프록시라는 제일 보편적인 개념에 대해 설명을 할 예정이다.
포워드 프록시
포워드는 말 그대로 사전, 즉 클라이언트->프록시 방향에 있는 프록시를 의미한다.
따라서 특정 url을 필터링하거나 동일한 페이지 요청 시 남은 정보를 캐쉬화 시켜, 사용자의 입장에서 보다 빠른 로딩을 체감할 수 있도록 할 수 있다.
종합하여 정리하자면 사용자에게서 서버로 가는 과정에서 중계 및 제한을 두어야하는 사항들에 대해서는 포워드 프록시가 관장할 수 있다고 이해하면 된다.
리버스 프록시
포워드 프록시와 반대 방향에 있다.
서버에서 클라이언트로 전송하는 쪽에서 중개를 해주기 때문에 내부망 보호의 역할을 겸하게 된다.
효율적인 암호화 통신 및 캐쉬에 저장된 데이터 출력 역시 작업할 수 있으며, 대규모 사이트의 경우 특정 서버의 과부하를 막기위한
로드밸런싱도 관장한다.
cors 오류와 프록시 사이 관계
위에서는 좀 더 일상적인 용어로 cors오류에 대해 이야기했지만, 전문적으로 말하자면 웹이 다른 도메인의 리소스를 요청할 때 일어나는 보안정책이다.
따라서 중개자인 프록시를 사용하면, 프록시가 이 둘 사이의 연결 다리(인터페이스)와 같은 역할을 하여 오류가 해결되는 것이다.
디테일
프록시를 경유하면 출처가 변경되기 때문에 두 도메인의 위치를 맞출 수 있다.
프록시는 클라이언트에게 받은 요청에 대해 헤더를 추가하거나 수정하는 것들도 가능하기 때문에 cors 헤더를 조작하는 방식으로 오류가 해결된다.
댓글남기기