웹 프론트 프로젝트를 할 때 호스트가 다른 서버로 API를 요청하는 경우 CORS 오류를 많이 겪어봤을 것이다. 이를 위해 중간에 CORS Proxy 서버를 두고 테스트를 하는 경우가 많은데 node로 만들어져 npm에 등록된 프로젝트도 많이 보였다. Go를 조금씩 공부하고 있어서 Go의 httpuil 패키지의 reverse proxy 모듈을 활용하여 간단한 CORS Proxy 서버를 만들어보았다. 타겟 서버가 세션 쿠키를 사용하는 경우를 대비해서, 쿠키 내용을 파싱하여 호스트 정보를 바꾸는 부분 또한 추가했으며 타겟 서버의 주소와 access control allow origin에 들어갈 현재 클라이언트의 호스트 정보, 프로그램의 포트 정보 등 부가 정보는 .env파일로 따로 작성하여 불러오도록 하였다..
최근 몇 주 동안 해당 해결 못했던 이슈를 해결하게 되어 잊지 않고자 글을 작성해본다. 브라우저에서는 현재 접속한 도메인 외에 다른 도메인으로 XMLHttpRequest 요청을 보내는 것을 기본적으로 막고 있다. 가장 주요한 이유로는 현재 사이트에 접속한 사용자의 의도와는 다르게 또는 사용자 몰래, 사용자가 인지하지 못한 다른 서버로 사용자의 데이터를 보낼 수 있기 때문이다. 서버와 달리 웹 클라이언트는 브라우 저상에서 코드가 노출되기 때문에 얼마든지 변조가 가능하다(Uglyfy 라이브러리를 통해 난독화할 경우는 제외하고!). CORS에 대한 자세한 내용은 다음을 참고하자. https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS HTTP 접..