TIL(20240722) [Http메서드와 CORS]
- HTTP 메서드에 대해 설명해주세요.
- http메서드는 서버 구조에서 요청,응답이 이루어지는 방식을 의미하며 http메서드를 사용하는 이유는 리소스와 동작을 분리하여 http메서드를 통해 서버가 수행해야 할 동작을 지정하면, url은 리소스만 식별하면 되기 때문입니다. http 메서드의 종류 중 주요 메서드들을 먼저 알아보자면
- GET메서드는 리소스를 조회하는 메서드이며, 해당 메서드는 멱등성이라는 개념을 지니고 있어, 여러번 조회 요청을 하여도 리소스는 변하지 않습니다. (멱등성O)
- POST메서드는 새로운 리소스를 생성하는데 사용합니다. 성공적으로 완료되면 201 http응답을 반환합니다. (멱등성X)
- PUT메서드는 부분수정이 아닌 리소스를 완전히 대체하는 개념(덮어쓰기)으로 클라이언트가 구체적인 리소스 위치를 아는 상태에서 URL를 지정합니다.(멱등성O)
- PATCH 메서드는 PUT과 같이 리소스를 수정하는 역할을 하지만 리소스를 부분 변경한다는 점에서 차이점이 있습니다. (멱등성X)
- DELETE 메서드는 리소스를 제거하는 역할을 합니다.
- HEAD는 Get요청과 거의 유사하지만 실제 본문 내용없이 HTTP 헤더 정보만을 반환합니다. 그래서 response에 Body가 없으며 리소스를 가져오지 않고도 그에 대한 정보를 얻을 수 있어 효율적입니다.
- Options는 리소스가 지원하는 메소드의 종류를 확인하는데 사용되며, options요청은 “allow”라는 헤더와 함께 해당 리소스에서 사용 가능한 HTTP메서드 목록을 반환합니다. (CORS정책을 확인하는데 사용함)
- TRACE는 주로 진단목적으로 사용되며 Trace요청은 클라이언트에서 서버로 전송되며, 이 과정에서 어떤 변경이나 추가가 이루어지는지를 확인하는 데 사용할 수 있습니다.
- CONNECT는 네트워크 터널을 만드는데 사용됩니다. 가장 흔한 예는 HTTPS통신을 위한 SSL터널입니다. 클라이언트가 CONNECT 메서드를 사용하면 웹서버는 목적지 서버와의 네트워크 연결을 설정하고 클라이언트와 목적지 서버 사이에서 데이터를 릴레이하게 됩니다.
- CORS(Cross Origin Resource Sharing)에 대해 설명해주세요.
- 웹 브라우저는 보안상의 이유로 동일 출처 정책을 따르는데, 이 정책은 웹 페이지가 다른 출처의 리소스에 접근하는 것을 제한합니다. CORS는 이러한 제한을 완화하여, 서버가 명시적으로 허용한 다른 출처의 리소스에 접근할 수 있게 합니다.
- CORS는 “교차 출처 리소스 공유”를 의미하며 출처를 구성하는 세 요소 프로토콜,도메인(호스트이름),포트로 이중 하나라도 다르면 CORS에러가 발생하게 됩니다. 교차 출처 공유는 ‘출처가 교차한다.’ 라고 해석되며 즉, 리소스를 주고받으려는 두 ‘출처가 다르다’를 뜻하는데 CORS를 설정한다는 것은 ‘출처가 다른 서버간의 리소스를 공유’하는 것을 허용한다라는 의미가 됩니다. CORS와는 상반되는 개념의 정책으로 SOP는 “같은 출처에서만 리소스를 공유할 수 있다” 라는 의미를 가지고 있습니다.
- CORS 관련 이슈는 모두 CORS 정책을 위반했기 때문에 발생하게 되는데, 사실 CORS라는 방어막이 존재하기 때문에 우리가 이 곳 저 곳에서 가져오는 리소스가 안전하다는 최소한의 보장을 받을 수 있기 때문에 CORS가 필요한 이유라고 생각합니다.
1
** SOP는처음 등장한 보안 정책으로 말 그대로 “같은 출처에서만 리소스를 공유할 수 있다”라는 규칙을 가진 정책
This post is licensed under CC BY 4.0 by the author.