주 메뉴 열기

wwiki β

HTTP

Jhkim (토론 | 기여)님의 2023년 4월 19일 (수) 04:47 판

목차

메시지 포맷

https://ko.wikipedia.org/wiki/HTTP#메시지 포맷

요청 메시지

요청 내용과 헤더는 <CR><LF>로 끝나야 한다.

요청 내용

GET /images/logo.gif HTTP/1.1

메서드

https://developer.mozilla.org/ko/docs/Web/HTTP/Methods

HEAD

HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.

PUT

목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다.

CONNECT

목적 리소스로 식별되는 서버로의 터널을 맺습니다.

OPTIONS

목적 리소스의 통신을 설정하는 데 쓰입니다.

목적 리소스에서 지원되는 옵션을 보여주라는 뜻??

TRACE

목적 리소스의 경로를 따라 메시지 loop-back 테스트를 합니다.

PATCH

리소스의 부분만을 수정하는 데 쓰입니다.

헤더

Accept-Language: en

요약표
HTTP 메서드 RFC 요청에 BODY가 있나? 응답에 BODY가 있나? 안전 Idempotent 캐시 가능?
GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH

응답 메시지

상태표시

status code+reason message

HTTP/1.1 200 OK.

응답 헤더

Content-Type: text/html

헤더

출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Headers

Accept-Language

어떤 언어를 클라이언트가 이해할 수 있는지, 그리고 지역 설정 중 어떤 것이 더 선호되는지를 알려줍니다.

Host

서버의 도메인명과 포트를 특정한다. 포트가 없으면 기본포트를 의미한다.

Host헤더의 필드는 HTTP/1.1 요청 메시지에 포함되어 전송되어야 한다. 없거나 한 개 이상이면 400(Bad Request) 상태코드가 전송될 것이다.

Connection

현재의 전송이 완료된 후에 네트워크 접속을 유지할지 말지 제어한다. keep-alive면 연결이 지속되고, 동일한 서버에 대한 요청을 수행할 수 있다.

Connection과 Keep-Alive와 같은 연결-지정 헤더 필드는 HTTP/2에서 금지되어 있다. 크롬과 파이어폭스는 무시하지만, 사파리는 해당 필드가 포함되어 있으면 응답을 처리하지 않는다.

표준 홉 간 헤더인 (Keep-Alive, Transfer-Encoding, TE (en-US), Connection, Trailer (en-US), Upgrade (en-US), Proxy-Authorization (en-US) 그리고 Proxy-Authenticate (en-US))를 제외하고, 메시지에 의해 사용되는 모든 홉 간 헤더들이 Connection 헤더 내에 연결되기에, 첫번째 프록시는 자신이 해당 헤더들을 소비해야 하며 포워드해서는 안된다는 것을 알게 됩니다.

X-Forwarded-Proto (XFP)

포워드 된 프로토콜

클라이언트(ex. 브라우저)와 프록시 또는 로드 밸런서에 접속하는데 사용했던 프로토콜(http, https)을 설정한다.

X-Forwarded-For (XFF)

HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치면, 서버 접근 로그에는 프록시나 로드 밸런서의 IP 주소만을 담고 있다. 클라이언트의 원 IP 주소를 보기위해 X-Forwarded-For 요청 헤더가 사용된다.

X-Forwarded-For: [아이피주소]

X-Real-IP

X-Forwarded-For와 동일하다. mdn에 올라오지 않을 걸로 봐서는 사실상 표준도 아닌 것으로 보인다.

ETag

ETag HTTP 응답 헤더는 특정 버전의 리소스를 식별하는 식별자입니다.

ETag = "ETag" ":" entity-tag

Examples:

ETag: "xyzzy"

ETag: W/"xyzzy"

ETag: ""

보안

Strict-Transport-Security

HSTS라고도 하며, HTTP 대신 HTTPS만을 사용하도록 설정

Preloading Strict Transport Security

구글의 preload service를 허용하는 설정이다.

에러코드