240109 HTTP 메서드, CORS

HR J·2024년 1월 9일
0

스프링 개념 정리

목록 보기
3/7

HTTP 메서드란?

HTTP 메서드는 클라이언트와 서버 간에 통신할 때 사용되는 요청 방식을 나타내는 메서드로, Java Spring에서도 HTTP 메서드를 활용하여 웹 애플리케이션을 개발할 수 있다. 주요 HTTP 메서드는 GET, POST, PUT, PATCH, DELETE이며, 기타 메서드로는 HEAD, OPTIONS, CONNECT, TRACE가 있다.

주요 메서드

- GET: 리소스를 조회하기 위해 서버에 요청하는 메서드

  • 주로 데이터를 조회할 때 사용. 예를 들어, 게시글 목록을 조회하거나 상세 정보를 가져올 때 사용.
@GetMapping("/resource")
public ResponseEntity<Resource> getResource() {
    // GET 요청 처리 로직
}

- POST: 서버에 새로운 데이터를 생성하기 위해 요청하는 메서드.

  • 주로 데이터를 생성하거나 처리할 때 사용. 예를 들어, 새로운 게시글을 작성하거나 사용자 정보를 등록할 때 사용.
@PostMapping("/resource")
public ResponseEntity<Resource> createResource(@RequestBody Resource resource) {
    // POST 요청 처리 로직
}

- PUT: 서버에 데이터를 전송하여 해당 리소스를 업데이트하는 메서드

  • 전체 리소스를 업데이트하는 경우에 사용. 예를 들어, 게시글 전체 내용을 수정할 때 사용.
@PutMapping("/resource/{id}")
public ResponseEntity<Resource> updateResource(@PathVariable Long id, @RequestBody Resource resource) {
    // PUT 요청 처리 로직
}

- PATCH: 서버에 데이터를 부분적으로 업데이트하기 위해 요청하는 메서드.

  • 리소스의 일부분만 수정하는 경우에 사용. 예를 들어, 게시글의 일부 내용을 수정할 때 사용.
@PatchMapping("/resource/{id}")
public ResponseEntity<Resource> partiallyUpdateResource(@PathVariable Long id, @RequestBody Map<String, Object> updates) {
    // PATCH 요청 처리 로직
}

- DELETE: 서버에서 리소스를 삭제하기 위해 요청하는 메서드.

  • 예를 들어, 게시글을 삭제할 때 사용.
@DeleteMapping("/resource/{id}")
public ResponseEntity<Void> deleteResource(@PathVariable Long id) {
    // DELETE 요청 처리 로직
}

기타 메서드

- HEAD: 서버에서 특정 리소스에 대한 헤더 정보만을 요청하는 메서드. 주로 리소스의 메타데이터를 확인하기 위해 사용.

- OPTIONS: 서버에서 특정 리소스에 대해 지원 가능한 HTTP 메서드들을 요청하는 메서드. 주로 CORS(Cross-Origin Resource Sharing) 정책을 확인하기 위해 사용.

- CONNECT: 클라이언트와 서버 간에 터널을 설정하기 위해 요청하는 메서드. 주로 SSL/TLS 같은 보안 계층을 설정할 때 사용.

- TRACE: 서버에게 클라이언트로부터 수신한 요청을 그대로 반환하여 테스트하는 메서드. 주로 디버깅이나 테스트 목적으로 사용.

이러한 HTTP 메서드를 적절하게 활용하여 Java Spring에서 웹 애플리케이션을 개발할 수 있다.

CORS란?

  • CORS (Cross-Origin Resource Sharing)는 웹 애플리케이션에서 다른 도메인 간에 리소스를 공유하기 위한 메커니즘. 이를 이해하기 위해서는 먼저 SOP (Same-Origin Policy)의 개념을 알아야 함.

  • SOP는 웹 브라우저에서 적용되는 보안 정책으로, 동일 출처 정책이라고도 함. 이 정책에 따르면, 웹 페이지에서 로드되는 리소스(HTML, CSS, JavaScript 등)는 동일한 출처(프로토콜, 호스트, 포트가 동일)에서만 로드되어야 함. 다른 출처에서 리소스를 로드하려면 SOP에 의해 제한되어 보안 상의 이유로 접근이 차단됨.

하지만 이러한 정책은 다른 도메인 간에 리소스를 공유해야 하는 상황에서 문제를 일으킴. 예를 들어, 도메인 A에서 실행 중인 JavaScript 코드가 도메인 B에 위치한 API에 접근하여 데이터를 요청하는 경우, SOP에 의해 차단됨. 이때 CORS가 필요.
  • CORS는 웹 브라우저에서 SOP를 우회하는데, 서버는 클라이언트가 CORS를 지원하는지 확인하기 위해 HTTP 헤더인 "Access-Control-Allow-Origin"을 설정. 이 헤더에는 허용된 도메인의 목록이 포함되며, 클라이언트의 Origin과 비교하여 접근을 허용하거나 차단.

  • 따라서 CORS는 클라이언트가 다른 도메인의 리소스에 안전하게 접근할 수 있도록 허용하면서도 보안을 유지하는 역할. 이를 통해 웹 애플리케이션 간의 상호작용이 가능하며, 다양한 도메인 간에 리소스를 공유하고 통신할 수 있음.

profile
Newbie Engineer&Programmer

0개의 댓글