- 자바스크립트 엔진 표준 스펙의 보안 규칙 중, 하나의 출처(Origin)에서 로드된 자원(문서나 스크립트)이 일치하지 않는 자원과 상호작용 하지 못하도록 요청 발생을 제한하는 정책 ==
동일 출처 정책- 단,
localhost와127.0.0.1은 둘 다 로컬을 의미하지만 브라우저 입장에서는 string value로 비교하기때문에 서로 다른 출처라고 판단.
- 웹 브라우저의 보안 기능 중 하나로, 웹 페이지가 현재 도메인과 다른 도메인(또는 포트)에서 리소스를 요청할 때 발생하는 정책
SOP를 완화하는 방법
서버는 CORS오류를 해결하기 위해 여러 가지 HTTP 응답 헤더를 설정
Access-Control-Allow-Origin: 어떤 출처의 요청을 허용할지를 지정합니다. 예를 들어, 특정 도메인만 허용할 수도 있고, *를 사용하여 모든 출처를 허용할 수도 있습니다.Access-Control-Allow-Methods: 허용되는 HTTP 메서드를 지정합니다 (GET, POST, PUT, DELETE 등).Access-Control-Allow-Headers: 클라이언트가 요청 시 사용할 수 있는 헤더를 지정합니다.Access-Control-Allow-Credentials: 쿠키 또는 인증 정보를 포함한 요청을 허용할지 여부를 지정합니다.프록시는 클라이언트와 서버 간의 중간자 역할을 하는 서버입니다. 클라이언트의 요청을 받아서 다른 서버로 전달하고, 해당 서버의 응답을 클라이언트에게 다시 전달합니다.
보통 말하는 프록시가 바로 이 포워드 프록시를 말한다.
Client와 Server 사이에 위치하여 요청을 중계하며,
요청과 응답은 Proxy Server를 거치고,
클라이언트를 감추는 효과가 있습니다.

포워드 프록시와 마찬가지로 요청과 응답이 Proxy Server로 이동하는데,
포워드 프록시와 다르게 Server들이 주로 내부망으로 구성되며 프록시에게만 연결을 허용한다.
즉, 서비스를 위한 보안 채널을 구축한다.
이런 경우 Client가 Server에 직접 접근이 불가능하므로,
Reverse Proxy에서 요청을 적극적으로 중계하는
Load Balancing의 역할을 수행하기도 한다.서버를 감추는 효과도 있다.

- **로드 밸런싱 (Load Balancing)**
클라이언트의 요청을 여러 백엔드 서버에 분산시켜 서버의 부하를 균형 있게 관리
- **보안**
클라이언트는 직접 백엔드 서버에 접근하지 않으므로, 백엔드 서버의 IP 주소가 숨겨집니다. == 보안 공격의 위험을 줄일 수 있습니다.
리버스 프록시에서 웹 방화벽을 설정하여 악성 요청을 차단할 수 있습니다.
- **캐싱**
자주 요청되는 데이터를 리버스 프록시 서버에서 캐싱하여 응답 속도를 향상시키고 백엔드 서버의 부하를 줄일 수 있습니다.
보통 Nginx, Apache같은 웹 서버를 리버스 프록시로 널리 사용된다.