"HTTP"의 두 판 사이의 차이

wwiki
이동: 둘러보기, 검색
(X-Forwarded-For (XFF))
(X-Forwarded-Proto (XFP))
 
(같은 사용자의 중간 판 14개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 +
== 메시지 포맷 ==
 +
[https://ko.wikipedia.org/wiki/HTTP#메시지_포맷 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 ======
 +
<code>HEAD</code> 메서드는 <code>GET</code> 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않습니다.
 +
 +
====== PUT ======
 +
목적 리소스 모든 현재 표시를 요청 payload로 바꿉니다.
 +
 +
====== CONNECT ======
 +
목적 리소스로 식별되는 서버로의 터널을 맺습니다.
 +
 +
====== OPTIONS ======
 +
목적 리소스의 통신을 설정하는 데 쓰입니다.
 +
 +
목적 리소스에서 지원되는 옵션을 보여주라는 뜻??
 +
 +
====== TRACE ======
 +
목적 리소스의 경로를 따라 메시지 loop-back 테스트를 합니다.
 +
 +
====== PATCH ======
 +
리소스의 부분만을 수정하는 데 쓰입니다.
 +
 +
==== 헤더 ====
 +
Accept-Language: en
 +
{| class="wikitable"
 +
|+요약표
 +
!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 ===
15번째 줄: 146번째 줄:
  
 
클라이언트(ex. 브라우저)와 프록시 또는 로드 밸런서에 접속하는데 사용했던 프로토콜(http, https)을 설정한다.
 
클라이언트(ex. 브라우저)와 프록시 또는 로드 밸런서에 접속하는데 사용했던 프로토콜(http, https)을 설정한다.
 +
 +
nginx의 경우에는 [[Nginx#proxy set header|proxy_set_header]]로 설정한다.
  
 
=== X-Forwarded-For (XFF) ===
 
=== X-Forwarded-For (XFF) ===
 
HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치면, 서버 접근 로그에는 프록시나 로드 밸런서의 IP 주소만을 담고 있다. 클라이언트의 원 IP 주소를 보기위해 X-Forwarded-For 요청 헤더가 사용된다.
 
HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치면, 서버 접근 로그에는 프록시나 로드 밸런서의 IP 주소만을 담고 있다. 클라이언트의 원 IP 주소를 보기위해 X-Forwarded-For 요청 헤더가 사용된다.
 
  X-Forwarded-For: [아이피주소]
 
  X-Forwarded-For: [아이피주소]
 +
 +
=== X-Forwarded-Host (XFH) ===
 +
HTTP 요청 헤더에서 클라이언트가 요청한 원래 <code>Host</code> 헤더를 식별하는 사실상의 표준 헤더입니다.
  
 
=== X-Real-IP ===
 
=== X-Real-IP ===
 
X-Forwarded-For와 동일하다. mdn에 올라오지 않을 걸로 봐서는 사실상 표준도 아닌 것으로 보인다.
 
X-Forwarded-For와 동일하다. mdn에 올라오지 않을 걸로 봐서는 사실상 표준도 아닌 것으로 보인다.
  
출처: https://developer.mozilla.org/ko/docs/Web/HTTP/Headers
+
=== 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를 허용하는 설정이다.
  
 
== 에러코드 ==
 
== 에러코드 ==

2023년 10월 27일 (금) 08:17 기준 최신판

메시지 포맷[편집 | 원본 편집]

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)을 설정한다.

nginx의 경우에는 proxy_set_header로 설정한다.

X-Forwarded-For (XFF)[편집 | 원본 편집]

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

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

X-Forwarded-Host (XFH)[편집 | 원본 편집]

HTTP 요청 헤더에서 클라이언트가 요청한 원래 Host 헤더를 식별하는 사실상의 표준 헤더입니다.

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를 허용하는 설정이다.

에러코드[편집 | 원본 편집]

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html