HTTP
HTTP이란?
- HTTP(HyperText Transfer Protocol)은 웹 서비스와 상호 작용할 수 있도록 하는 애플리케이션 프로그래밍 인터페이스(API)이다.
- 주로 웹 브라우저와 웹 서버 간의 통신에 사용되며, 웹 페이지를 로드 하는데 사용된다.
HTTP의 특징
- 클라이언트-서버 구조: 클라이언트가 서버에 요청을 보내면, 서버는 그에 대한 응답을 보내는 구조
클라이언트는 UI에 집중 + 서버는 비즈니스 로직이나 데이터를 관리 => 클라이언트와 서버가 독립적으로 발전가능 - 무상태성(Stateless): 각 요청이 서로 독립적이며, 서버는 클라이언트의 상태 정보를 저장하지 않는다.
- 비연결성(Connectionless): 클라이언트가 서버에 요청을 보내고 응답을 받으면 연결이 종료된다.
- 단순성: HTTP 메시지는 사람이 읽고 이해할 수 있으며, 테스트하기 쉽다.
- 확장 가능성: HTTP 헤더는 HTTP를 확장하고 실험하기 쉽게 만들어준다.
HTTP의 메서드
HTTP 메서드는 클라이언트와 서버 사이에 이루어지는 요청의 종류를 나타낸다.
- GET: 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 오직 데이터를 받기만 한다.
- POST: 특정 리소스를 대체, 생성 등을 할 때 사용한다. 이는 종종 서버의 상태의 변화나 부작용을 일으킨다.
- PUT: 특정 리소스의 데이터를 작성하거나 갱신할 때 사용한다.
- DELETE: 특정 리소스를 삭제한다.
- PATCH: 리소스의 부분만을 수정하는 데 사용한다.
GET과 POST의 차이
데이터 전송 방식
- GET 메서드는 URL의 일부로 데이터를 전송한다. 이는 브라우저의 주소창에 직접 표시되므로 민감한 정보를 전송하기에는 적합하지 않다.
- POST 메서드는 HTTP 메시지 바디에 데이터를 포함하여 서버로 전송한다. 이 방식은 사용자의 브라우저에서 직접 볼 수 없기 때문에 더 안전한 데이터 전송을 제공한다.
데이터 제한
- GET 메서드는 URL의 길이에 따라 데이터 크기가 제한된다. 일반적으로 이는 2048 문자로 제한되어 있다.
- POST 메서드는 이론적으로 데이터 크기에 제한이 없다. 그러나 웹 서버 설정에 따라 제한될 수 있다.
캐싱
- GET 메서드는 브라우저에서 캐싱될 수 있다. 이는 사용자가 웹 페이지를 새로 고침하거나 뒤로 가기를 클릭할 때 페이지가 다시 로드되지 않도록 한다.
- POST 메서드는 캐싱되지 않는다. 이는 POST를 사용하여 전송된 데이터가 변경될 가능성이 있기 때문이다.
북마크 및 브라우저 기록
- GET 메서드는 URL이 브라우저의 기록에 저장되고, 북마크할 수 있다.
- POST 메서드는 브라우저 기록에 저장되지 않으며, 북마크할 수 없다.
HTTP와 HTTPS의 차이
HTTP와 HTTPS의 주요 차이점은 보안에 있다.
HTTP는 HyperText Transfer Protocol의 약자로, 웹 서버와 클라이언트(브라우저) 사이의 정보를 주고받는 데 사용되는 프로토콜이다. 그러나 HTTP를 사용하면 전송되는 정보를 네트워크 상에서 가로챌 수 있기 때문에 보안에 취약하다.
반면에 HTTPS는 HTTP Secure의 약자로, HTTP에 보안 기능을 추가한 프로토콜이다. HTTPS는 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 보안 프로토콜을 사용하여 데이터를 암호화한다. 이로 인해, 데이터가 전송되는 도중에 누군가가 정보를 가로채더라도, 암호화되어 있어 원래의 정보를 알아낼 수 없다.
따라서, 민감한 정보를 다루는 웹 사이트(예: 인터넷 뱅킹, 온라인 쇼핑, 이메일 등)에서는 HTTPS를 사용하여 사용자의 정보를 보호하는 것이 중요하다. 이를 통해 사용자의 정보를 안전하게 보호하면서도 웹 서비스의 품질을 유지할 수 있다.
HTTP 상태코드
HTTP 상태 코드는 웹 서버가 클라이언트의 요청에 대해 응답할 때 사용하는 3자리 숫자이다. 이 코드는 요청의 처리 결과를 나타낸다.
- 1xx (정보): 요청이 수신되고 계속 처리됨을 나타낸다.
- 2xx (성공): 요청이 성공적으로 수신, 이해, 수용되었음을 나타낸다. 가장 흔한 예는 200 OK로, 요청이 성공적으로 처리되었음을 나타낸다.
- 3xx (리다이렉션): 브라우저가 추가 작업을 수행해야 하거나 다른 위치로 이동해야 함을 나타낸다. 예를 들어 301 Moved Permanently는 요청한 페이지가 새 위치로 영구적으로 이동했음을 나타낸다.
- 4xx (클라이언트 오류): 클라이언트가 잘못된 요청을 했거나 요청을 완료할 수 없음을 나타낸다. 예를 들어 404 Not Found는 요청한 페이지를 서버에서 찾을 수 없음을 나타낸다.
- 5xx (서버 오류): 서버가 유효한 요청을 충족시킬 수 없을 때 발생한다. 예를 들어 500 Internal Server Error는 서버에 오류가 발생하여 요청을 완료할 수 없음을 나타낸다.
HTTP 상태코드 중 400번대와 500번대의 차이점
HTTP 상태 코드는 웹 서버가 클라이언트의 요청을 처리한 결과를 나타내는데 사용된다. 400번대와 500번대의 코드는 주로 오류 상황을 나타낸다.
400번대 HTTP 상태 코드
- 이 범위의 코드는 클라이언트 측에서 발생한 오류를 나타낸다.
- 즉, 사용자의 요청에 문제가 있을 때 반환된다.
- 예를 들어, 404 Not Found는 요청한 리소스를 서버에서 찾을 수 없을 때 반환되며, 403 Forbidden은 사용자에게 필요한 권한이 없어 요청을 수행할 수 없을 때 반환된다.
500번대 HTTP 상태 코드
- 이 범위의 코드는 서버 측에서 발생한 오류를 나타낸다.
- 즉, 서버가 요청을 정상적으로 처리하지 못했을 때 반환된다.
- 예를 들어, 500 Internal Server Error는 서버 내부 오류가 발생했음을 나타내며, 502 Bad Gateway는 서버가 게이트웨이나 프록시 역할을 하는 서버로부터 잘못된 응답을 받았음을 나타낸다.
따라서, 400번대 코드는 사용자의 요청에 문제가 있을 때, 500번대 코드는 서버 내부에 문제가 있을 때 주로 반환된다. 이런 방식으로 HTTP 상태 코드는 웹 서버와 클라이언트 사이의 통신 상태를 정확하게 표현하고 문제 해결에 도움을 준다.
'Computer Science' 카테고리의 다른 글
프레임워크(Framework)와 라이브러리(Library)의 차이 (0) | 2024.02.04 |
---|---|
REST API (0) | 2024.01.30 |
레지스터 Register (0) | 2024.01.25 |