티스토리 뷰
◉ HTTP
Hyper-Text Transfer Protocol
서버와 클라이언트가 메세지를 교환하기 위한 프로토콜
🔍 프로토콜
서로 다른 하드웨어 기기간의 데이터 동신 규약
즉, HTTP는 인터넷상의 커뮤니케이션에 시용되는 형식들 중 하나이다.
구글에 검색어를 입력할 시, URI를 보면 아래와같이 입력되어있다.
https://www.google.com/search?q=http
이는 'www.google.com/search?q=http' 를 HTTPS형식으로 보낸다는 의미이다.
◉ HTTPS
기존의 HTTP에 Secure(보안)이 추가된 것
HTTPS는 기존의 HTTP보다 안전하다는 것을 의미한다.
어떤 부분에서 안전한걸까?
1. 사용자가 사이트에 보내는 정보들을 제 3자가 보지 못하게한다.
비대칭키(암호키와 공개키)를 사용하여 해당 서버만이 암호를 복호화할 수 있다.
2.접속한 사이트가 믿을만한 곳인지 알려준다
HTTPS는 기관으로부터 검증된 사이트만 주소에 사용이 가능하다.
HTTP를 사용하는 사이트의 경우 주소창에 '안전하지 않다'라는 표시가 뜬다.
📍 HTTP Message
웹사이트에 접속하면 화면을 보여주기 위해 많은 리소스를 다운로드한다.
🔍 리소스
URL을 검색해서 받아온 결과물로 서버에서 전달받은 데이터를 의미한다.
(HTML, JSON, 이미지, 영상, 파일 등)
💡 웹 브라우저에서 서버로 어떻게 요청을 보낼까?
구글에 검색을 한다고 가정하면,
- 웹브라우저는 먼저 구글 서버 주소(www.google.com)를 찾아 HTTP요청 메세지를 패킷안에 담아 서버에게 전달한다.
- 구글 서버는 전달받은 메세지를 분석해서 HTTP응답 메세지를 패킷에 담아 웹 브라우저로 전달한다.
- 웹 브라우저는 전달받은 데이터로 화면을 보여준다.
이 과정에서 웹 브라우저와 서버가 주고 받았던 HTTP메세지를 살펴보면,
Start-line / Status-line 시작라인 |
Header 헤더 |
empty line 공백라인 |
body |
으로 구성되어있다.
⚠️ 요청 메세지의 경우 서버에게 보낼 데이터의 유무에 따라 body의 포함 유무를 결정한다.
1. Start-line / Status-line
➰ 요청 메세지 - Start-line
HTTP메소드 , 쿼리 또는 경로 , HTTP version으로 구성
ex . GET /search?q=http HTTP/1.1
➰ 응답 메세지 - Status-line
HTTP version , 상태코드 , 상태를 나타내는 문구로 구성
ex. HTTP/ 1.1 200 OK
2. Header
HTTP전송에 필요한 모든 부가정보를 담고있다.
⚒️ HTTP 메소드
• 주요 메소드
- GET : 리소스 조회
- POST : 요청 데이터 처리. 주로 등록에 사용 -> 응답 메세지의 header필드에 Location값이 추가됨
- PUT : 리소스를 완전히 대체. 해당 리소스가 없으면 생성
- PATCH : 리소스를 부분 변경
- DELETE : 리소스 삭제
• 기타 메소드
- HEAD : GET과 동일하지만 메세지 부분을 제외하고, 상태줄과 헤더만 반환
- OPTIONS : 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에 사용)
- CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
- TRACE : 대상 리소스에 대한 경로를 따라 메세지 루프백 테스트를 수행
⚠️ POST와 PUT의 차이점
PUT의 경우 리소스를 완전히 대체하거나 해당 리소스가 없으면 생성하므로 리소스의 주소를 정확히 알고 있어야한다.
POST / users HTTP/ 1.1
PUT / users/11 HTTP/ 1.1
⚒️ HTTP 상태코드
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
• 100번대 (정보) : 요청을 받았으며 프로세스를 계속 처리중임 -> 거의 사용하지 않음
• 200번대 (성공) : 요청을 성공적으로 처리
• 300번대 (리다이렉션) : 요청 완료를 위해 웹 브라우저에서 추가 작업 조치(리다이렉션)이 필요
• 400번대 (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
• 500번대 (서버 오류) : 서버가 정상적 요청을 처리하지 못함
🔍 리다이렉션
응답의 결과에 Location 헤더가 있으면 Location위치로 이동한다.
종류
- 영구적인 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동 - 301, 308
- 일시적인 리다이렉션 : 일시적인 변경 - 302, 303, 307
- 특수한 리다이렉션 : 결과대신 캐시를 사용 - 304
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
'코딩 > 코딩노트' 카테고리의 다른 글
[React] React와 JSX (0) | 2024.03.21 |
---|---|
[Github 배포] gh-pages로 배포하기(feat. 끝나지 않는 에러) (0) | 2023.06.15 |
[JavaScript] - LocalStorage & JSON (0) | 2023.01.28 |
[JavaScript] - 객체(+window객체), 변수와 상수 (0) | 2023.01.14 |
[JavaScript] DOM (0) | 2023.01.07 |