2022. 5. 25. 16:36ㆍ개발공부/HTTP
본 글은 인프런 김영한님 강의를 정리한 글입니다. 자세한 강의내용은 강의를 통해 들어보시길 추천드립니다.
HTTP 전송에 필요한 모든 부가정보가 담긴 메시지입니다.
표현(Representation)
협상(Content-Negotiation)
전송
일반정보
특별한 정보
인증
쿠키
표현
DB의 바이너리 타입이나 바이트 코드의 파일형식 등을 HTTP로 통신하려면 표현 타입을 지정해줘야 합니다. 주로 JSON을 사용합니다. 이렇게 표현형식, 압축(인코딩), 언어, 길이로 이루어진 헤더의 부분을 표현이라고 합니다.
Content-Type
: 미디어 타입을 말합니다.(text/HTML, JSON, png...)Content-Encoding
: 표현 데이터를 압축할 경우에 사용합니다.(gzip...)Content-Language
: 기반이 되는 언어를 말합니다.(ko, ko-KR, en, en-US...)Content-Length
: 메시지 데이터의 길이를 나타내며, 단위는 byte 입니다. 분산전송(Transfer-Encoding)에선 사용할 수 없습니다.
협상
클라이언트가 선호하는 표현을 요청하는 부분입니다. 서버가 요청을 모두 실행시켜준다는 것은 아니지만, 협상을 통해 요청을 맞춰주는 노력을 할 수 있습니다.
Accepted Language
: 원하는 언어를 전달할 수 있으며, 우선순위도 정해줄 수 있습니다.ko:0.9;en:0.8...
전송
단순전송
: 일반적인 전송을 말합니다.압축전송
: gzip으로 압축해서 전송하는 것을 말합니다.분할전송
:Transfer-Encoding
에 명시되어 전달됩니다. chunck들로 쪼개져 전송되기 때문에 content-length가 사용불가 합니다.범위전송
: 데이터가 클 때, 범위를 나눠 전송하는 방식입니다.
일반정보
헤더에 담기는 일반정보입니다.
referer
: 이전 페이지 요청에 대한 URI입니다. 이는 유입경로 분석 시에도 사용될 수 있습니다.user-agent
: Application에 대한 정보를 알 수 있어서 통계정보로 사용할 수 있습니다.server
: 중개하는 서버가 아닌 Origin 서버에 대한 내용을 응답으로부터 전달되어집니다.예시) Server: Apache/2.4.1 (Unix)
특별한 정보
Host
: 필수값이며 하나의 서버(IP)가 여러 도메인을 가지고 있을 때, 호스트를 통해 연결된 도메인을 지정해줄 수 있습니다.Location
: 앞서 정리한 HTTP 상태코드3xx
에서 리다이렉트가 필요할 때 서버에서 응답 시 Location 헤더에 URI를 담아서 준다했는데 그 부분입니다.Allow
: 허용 가능한 HTTP 메서드를 반환해줍니다.Retry-After
: 서비스가 언제까지 불능 상태인지 표기해줍니다.
인증
인증방식(JWT, OAuth...)에 따라 형식은 다르지만, 헤더값 Authorization: Basic xxxxxx
과 같이 전달됩니다. 만약 401 UnAuthorized
오류 상태코드가 떴다면 응답 시 헤더에 WWW-Authentication
을 함께 리턴해야합니다.
쿠키
로그인 하는 경우, 유지해야하는 정보가 생기는데 그때 쿠키를 사용하면 HTTP 무상태(stateless)를 보완해줄 수 있습니다. 서버에서 set-cookie
에 쿠키를 담아 보내면 클라이언트에선 쿠키 저장소에 저장해 필요할 때마다 꺼내어 사용해줄 수 있습니다.
set-cookie
: 서버에서 주는 sessionid, path, secure 등으로 구성됩니다.
쿠키는 sessionKey나 OAuth의 경우 인증토큰을 쿠키로 서버에 요청할 때마다 서버가 처리를 해야하는데, 이를 보완하기 위해 웹 스토리지(LocalStorage)에 담아놓고 필요할 때마다 꺼내어 쓸 수 있는 방법이 있습니다.
하지만 쿠키는 안전하지 않기 때문에 민감정보(주민등록번호, 전화번호)는 사용하지 않아야합니다.
도메인 지정
: 쿠키가 어떤 도메인에 속하는지 설정을 가능하게 합니다.경로
: 경로를 포함한 하위 경로 패키지는 쿠기에 접근할 수 있습니다.보안
: secure는 HTTPS만 쿠키 전송이 가능하게 막을 수 있습니다.HTTPOnly
: XSS(Cross-Site-Script) 공격을 방지하기 위해 쿠키가 HTTP에만 사용가능 하고 스크립트(Javascript) 내에선 사용이 불가하도록 합니다.SameSite
: 요청도메인, 설정된 도메인이 같을 때만 쿠기 전송이 가능하도록 해줍니다. XSRF(Cross-Site-Request-Forgery)를 방지할 수 있습니다.
참조: 인프런 김영한님 HTTP 강의
'개발공부 > HTTP' 카테고리의 다른 글
[HTTP강의] HTTP 캐시 (0) | 2022.05.26 |
---|---|
[HTTP강의] HTTP 상태코드 (0) | 2022.05.24 |
[HTTP강의] HTTP 메서드 (0) | 2022.05.23 |
[HTTP강의] HTTP 특징 (0) | 2022.05.23 |
[HTTP강의] TCP/UDP와 URI (0) | 2022.04.21 |