네트워크/HTTP
HTTP 헤더란? (Http headers)
HTTP 헤더란? HTTP 통신의 핵심이 되는 중요한 컴포넌트 중 하나이다. 요청 혹은 응답의 필수 구성요소이다. 클라이언트와 서버 간의 메세지 전송 및 해석을 돕기 위해 메타데이터와 추가 정보를 제공한다. HTTP 헤더 포맷의 특징 키-밸류 (key-value) 쌍으로 이루어져 있다. 순수한 텍스트 (plain text) 로 이루어져 있고, 특정한 문법을 따른다. 콜론(:) 과 스페이스() 로 구분된다. 각 헤더는 하나의 줄로 표현되고, 각 줄은 하나의 헤더 필드를 나타낸다. 보통 아래처럼 생겼다. 네이버의 요청 헤더 (Request Header) 예시 :authority: www.naver.com :method: GET :path: / :scheme: https accept: text/html,app..
HTTP/1 에서 HTTP/2 로 가면서 얻는 개선점들 (HTTP1 에서 HTTP2로)
HTTP/1.x 에서 HTTP/2 로 HTTP/2 로 버전이 업되면서 HTTP/1.x 버전의 퍼포먼스 문제를 개선했다. HTTP/1.x 에서의 몇가지 대표적 문제점들 HTTP 바디와 달리 HTTP 헤더는 압축이 되지 않았다. 사실 연속된 HTTP 메세지를 보낼 때 마다 같은 HTTP 헤더가 반복되는 경우가 매우 많았기 때문에 이는 비효율적이었다. 다중 전송 (multiplexing) 이 불가능해서 서버 하나에 커넥션을 여러개 열어야 했다. 사실 Warm TCP 커넥션이 Cold TCP 커넥션보다 효율적이라는 점에서 생각해볼 필요가 있다. 이진 프로토콜 (Binary Protocol) HTTP/1.x 에서는 텍스트 프로토콜을 사용했는데, HTTP/2 에서는 이진 프로토콜을 사용한다. 이로 인해 데이터 구문..
HTTP 응답 메세지의 구조
HTTP 응답 메세지의 구조 시작 줄 (Start line), 헤더 (Header), 바디 (Body)로 HTTP 요청 메세지의 구조와 기본 틀이 동일하다. 시작 줄 (Start line, Status line) 아래의 예를 보며 구조를 뜯어보자. HTTP/1.1 404 Not Found 프로토콜 버전: 주로 HTTP/1.1 버전을 사용한다. 상태 코드: 요청의 성공 실패 여부를 가리킨다. 예시에서는 404 가 반환됐다. 200: 성공, 404: 찾을 수 없음, 302: 임시적으로 이동 상태 텍스트: 상태 코드에 대해 사람이 이해하기 쉽도록 설명해주는 텍스트이다. 예시에서는 Not Found 가 404 의 의미를 설명하고 있다. 헤더 (Headers) 요청 메세지의 헤더와 동일하게 대소문자를 구분하지 않..
HTTP 요청 메세지의 구조
HTTP 요청 구조 (HTTP Request Structure) 크게 시작 줄 (Start line), 헤더 (Headers), 바디 (Body) 라는 3가지 파트로 분류된다. 시작 줄 (Start line) 시작 줄 (Start line) 에는 보통 3가지 정보를 포함한다. HTTP Method GET, PUT, POST, HEAD, OPTIONS 등의 메서드가 존재한다. 대략적으로 어떠한 액션이 수행될지에 대해 말해준다. URL 혹은 프로토콜, 포트, 도메인 절대 경로 절대 경로 (absolute path): 많은 HTTP 메서드에 가장 많이 쓰이는 형식이다. ? 를 포함한 쿼리 스트링이 뒤에 붙을 수 있다. POST / HTTP 1.1 GET /background.png HTTP/1.0 HEAD /..
HTTP Content-Type 헤더란?
HTTP Content-Type 헤더란? HTTP 통신에 이용되는 헤더 중 하나이다. HTTP 요청 혹은 응답으로 보내지는 데이터의 미디어 타입 (MIME type) 을 명시하는데 사용된다. HTTP 통신을 통해 받은 데이터를 어떻게 해석하고 처리할지에 대한 정보를 제공한다. 수신자는 이 정보를 기반으로 콘텐츠를 해석하므로 오류나 오해를 방지할 수 있다. Content-Type 에 들어가는 MIME type HTTP Content-Type 헤더의 값에는 MIME type (media type) 이 들어간다. 인코딩: Content-Type 에 추가적으로 들어갈 수 있는 것 인코딩은 MIME type 뒤에 붙어 해당 데이터를 어떤 인코딩 방식으로 읽어야 할지 알려준다. 예시로 Content-Type: te..
HTTP MIME type 이란?
MIME type 이란? MIME (Multipurpose Internet Mail Extensions) 표준에서 따오게 된 용어이다. 이는 1990년 초기에 개발되어 이메일에서 텍스트가 아닌 이미지, 오디오, 비디오 혹은 ASCII 가 아닌 문자열을 보내는데 사용되었다. MIME type 의 핵심 역할 파일 혹은 메세지의 콘텐츠 유형을 기술하는 표준화된 방법이다. 초기엔 이메일을 받은 클라이언트에게 올바른 해석을 통해 첨부파일을 보여주기 위함이 목적이었으나, 현재는 HTTP 에서 더 유명하다. MIME type 이 도입된 곳 HTTP 를 포함한 여러 인터넷 프로토콜에 도입됐다. 웹에서 전송되는 파일의 Content-Type 을 기술하는데 이용된다. HTTP 통신에서 Content-Type 헤더의 값으로..
HTTP 쿠키 (HTTP Cookie) 의 생성 옵션
쿠키 생성 옵션 쿠키는 생성할 때 몇가지 옵션을 줄 수 있다. HTTP 헤더에 들어간 쿠키 옵션 예제 Set-Cookie: =; Domain= Set-Cookie: =; Expires= Set-Cookie: =; HttpOnly Set-Cookie: =; Max-Age= Set-Cookie: =; Partitioned Set-Cookie: =; Path= Set-Cookie: =; Secure Set-Cookie: =; SameSite=Strict Set-Cookie: =; SameSite=Lax Set-Cookie: =; SameSite=None; Secure // Multiple attributes are also possible, for example: Set-Cookie: =; Domain=; S..
HTTP 쿠키 (HTTP Cookie) 란?
HTTP 쿠키란? HTTP 쿠키를 이해하기 전에 HTTP 공부가 선행된다. HTTP 통신 프로토콜을 모르면 쿠키만 공부해봐야 반쪽짜리 지식이다. HTTP 프로토콜은 기본적으로 무상태 (stateless) 프로토콜이다. 무상태란 통신 중에 아무것도 저장하지 않는 것을 말한다. 아무것도 저장하지 않기에 통신이 끝나면 아무것도 기억하지 못한다. HTTP 프로토콜이 무언가를 기억할 수 있게 하는 1가지 방법이 있는데, 이를 '쿠키'라 한다. 쿠키는 인터넷 통신의 매개체인 '브라우저'가 기억한다. 브라우저는 쿠키를 저장해두었다가 매 HTTP 요청마다 저장소에 있는 쿠키를 함께 보낸다. 사실, 무상태라는 것은 큰 장점이다. 상태가 없다면, 같은 것을 물어봤을 때 매번 똑같이 응답한다. ..
400 Bad Request, 401 Unauthorized, 403 Forbidden 상태코드 구분하기
400 Bad Request 에러 애플리케이션이 요구하는 스펙에 맞지 않는 요청을 했을 때 ex. 회원가입 시 필수 항목 누락 상태코드 400 - MDN 공식 문서 상태코드 400 - 위키 401 Unauthorized 에러 토큰이 없는 경우 토큰이 만료된, 조작된, 유효하지 않은 경우 상태코드 401 - MDN 공식 문서 상태코드 401 - 위키 403 Forbidden 에러 토큰은 유효한데, 권한이 없는 경우 ex. 다른 사용자의 글을 수정하려고 할 때 상태코드 403 - MDN 공식 문서 상태코드 403 - 위키 레퍼런스 https://auth0.com/blog/forbidden-unauthorized-http-status-codes/