HTTP

kio·2023년 6월 4일
0

CS

목록 보기
23/30

HTTP

 초기에는 HTML과 같은 하이퍼미디어 문서를 주로 전송했지만, 최근에는 Plain text, JSON, XML 등 다양한 형태의 정보도 전송하는 애플리케이션 레이어 프로토콜이다. \
> 초기에는 웹 브라우저와 웹 서버 간의 커뮤니케이션을 위해 디자인되었지만 최근에는 모바일 애플리케이션 및 IoT 등과의 커뮤니케이션과 같이 다른 목적으로도 사용되고 있다.\
> HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연 다음 응답을 받을 때까지 대기하는 전통적인 클라이언트-서버 모델을 따른다. \
HTTP는 무상태 프로토콜이며, 이는 서버가 두 요청 간에 어떠한 상태나 데이터를 유지하지 않음을 의미한다. (상태를 유지하기 위한 노력으로 Cookie와 Session을 사용한다.) \
> 일반적으로 안정적인 TCP/IP 레이어를 기반으로 사용하는 응용 프로토콜이다.

Method

GET

특정 리소스를 받기 위한 요청이다. 따라서, 리소스의 생성, 수정 및 삭제 등에 사용해서는 안된다.

POST

 리소스를 생성하거나 컨트롤러를 실행하는 데 사용한다.

PUT

변경 가능한 리소스를 업데이트하는 데 사용되며 항상 리소스 식별 정보를 포함해야 한다.

PATCH

 변경 가능한 리소스의 부분 업데이트에 사용되며 항상 리소스 식별 정보를 포함해야 한다.
PUT을 사용해 전체 객체를 업데이트하는 것이 관례여서 거의 사용되지 않는다.

DELETE

 특정 리소스를 제거하는 데 사용한다.
일반적으로 Request body가 아닌 URI 경로에 제거하려는 리소스의 ID를 전달한다.

 클라이언트가 본문 없이 리소스에 대한 헹더만 검색하는 경우 사용한다.
일반적으로 클라이언트가 서버에 리소스가 있는 지 확인하거나 메타 데이터를 읽으려는 때만 GET 대신 사용한다.

OPTIONS

 클라이언트가 서버의 리소스에 대해 수행 가능한 동작을 알아보기 위해 사용한다. 
일반적으로 서버는 이 리소스에 대해 사용할 수 있는 HTTP 요청 메서드를 포함하는 Allow 헤더를 반환한다. (CORS에 사용)

CORS란\
브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한합니다. 그래서 cross-origin 요청을 하려면 서버의 동의가 필요합니다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절합니다.\
이러한 허락을 구하고 거절하는 메커니즘을 HTTP-header를 이용해서 가능한데, 이를 CORS(Cross-Origin Resource Sharing)라고 부릅니다.

HTTP vs HTTPS

HTTPS(https://)는 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP(http://)입니다. SSL(또는 TLS) 인증서는 일반 HTTP 요청 및 응답을 암호화합니다. 따라서 HTTPS는 HTTP보다 더 안전한 보안용 프로토콜이라고 할 수 있습니다.

HTTP와 HTTPS의 유일한 차이점은 HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 있습니다. 이를 TLS(전송 계층 보안) 프로토콜이라고 합니다. 모든 유형의 데이터는 변경되거나 손상될 수 없는 HTTPS 사이트를 통해 전달되며 제3자로부터 보호됩니다.

HTTP 1.1 vs 2.0

  • 성능 - 2.0은 바이너리 데이터를 사용해 통신해야하는 데이터의 양이 줄어들어 더 빠릅니다.
  • 서버푸시 - 클라이언트의 요청없이도 서버가 푸시할 수 있습니다.
  • 보안 - 2.0은 TLS(암호화)가 필수지만, 1.1은 선택사항입니다.
  • 호환성 - 2.0은 많이 지원하지 않습니다.
  • 복잡성 - 2.0은 구현하는데 더 많은 리소스가 들어서, 유지보수에 불리합니다.

0개의 댓글