멱등성, SOP
1. 멱등성
정의: 동일한 함수나 API를 여러 번 호출해도 서버의 상태가 단 한 번 호출했을 때와 똑같이 유지되는 특성을 뜻함
필요성: 네트워크 오류로 인해 클라이언트가 동일한 요청을 중복으로 보냈을 때(예: 결제 요청, 데이터 삭제 등), 시스템의 오작동이나 데이터 중복 저장을 방지하기 위해 필수적으로 설계해야 함
멱등한 메서드 : GET , PUT , DELETE
- 여러번 보내도 안전함
-- 예) DELETE로 같은 글을 또 지워도 이미 삭제됨 상태 그대로 남아 있음
멱등하지 않은 메서드 : POST, PATCH
- 반복되면 안됨
-- 예) 결제 POST 가 두번 이상가면 중복되어 사고남
2. SOP
SOP : 브라우저가 서로 다른 웹사이트의 스크립트들이 메모리 상에서 서로의 데이터를 훔쳐보지 못하도록 차단하는 최소한의 격리 벽 이다.
즉 내가 열어둔 웹사이트의 주소(출처)가 서로 다르면, 자바스크립트 코드를 통해서 상대방 사이트의 내부 데이터나 화면 정보를 읽어가는 행위를
브라우저 프로그램이 엔진 레벨에서 강제로 실패하게 만든다
3. 출처(Origin)
출처 : 웹 브라우저가 특정 웹사이트를 식별하고 보안 경계를 나누기 위해 사용하는 웹 주소의 고유한 신분증
- 출처를 구성하는 3가지 요소
주소가 https://naver.com 일 때 출처는 다음과 같이 쪼개짐
3-1. 프로토콜 (Protocol): https:// 또는 http:// (통신 규약)
3-2. 호스트 (Host): ://naver.com 또는 localhost (서버 도메인 주소)
3-3. 포트 (Port): :443 또는 :8080 (서버로 들어가는 문 번호)
2. 출처가 '같다'와 '다름'의 판별 기준
브라우저는 철저하게 이 3가지만 비교합니다.
출처가 같은 경우
(Same-Origin):https://naver.com 와 https://naver.com
이유: 프로토콜(https), 호스트(naver.com), 포트(생략된 443)가 모두 일치합니다. 뒤의 경로만 다르므로 브라우저는 같은 웹사이트로 봅니다.
출처가 다른 경우 (Cross-Origin):
http://naver.com ↔ https://naver.com (프로토콜이 다름)
https://naver.com ↔ https://naver.com (호스트의 서브 도메인이 다름)
https://localhost:3000 ↔ https://localhost:8080 (포트 번호가 다름)
댓글
댓글이 없습니다.
