HTTPããããŒã«ã¯ããŸããŸãªçš®é¡ããããçšéã«å¿ããŠããã€ãã®åé¡ãååšããŸãã
ãã®èšäºã§ã¯ãHTTPããããŒãã«ã€ããŠã以äžã®å 容ããããããã解説ããŠããŸãã
- HTTPããããŒãšã¯
- HTTPããããŒã®åé¡
- General HeaderïŒæ±çšããããŒïŒã®äžèЧ
- Request HeaderïŒãªã¯ãšã¹ãããããŒïŒã®äžèЧ
- Response HeaderïŒã¬ã¹ãã³ã¹ããããŒïŒã®äžèЧ
- Entity HeaderïŒãšã³ãã£ãã£ããããŒïŒã®äžèЧ
HTTPããããŒãšã¯
HTTPããããŒã¯ãHTTPãªã¯ãšã¹ããHTTPã¬ã¹ãã³ã¹ã«ä»å ãããè¿œå æ å ±ïŒã¡ã¿ããŒã¿ïŒã§ããã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ãªã©ïŒãšãµãŒããŒãéä¿¡ããéãHTTPããããŒã®æ å ±ã«ãã£ãŠãéä¿¡ã®æ¹æ³ãå 容ã现ããå¶åŸ¡ã»èª¿æŽããããšãã§ããŸãã
HTTPããããŒã¯ãè€æ°ã®ããããŒãã£ãŒã«ãïŒHeader FieldïŒãšåŒã°ããè¡ããæãç«ã£ãŠãããããããã®ããããŒãã£ãŒã«ãã¯ã以äžã®ããã«ããã£ãŒã«ãåïŒname
ïŒãããã³ãã³ïŒ:
ïŒããã1æååã®ç©ºçœããããã£ãŒã«ãå€ïŒvalue
ïŒãã§æ§æãããŠããŸãã
æ§æ
ãã£ãŒã«ãåïŒnameïŒ: ãã£ãŒã«ãå€ïŒvalueïŒ
äŸ
Content-Type: text/html
HTTPããããŒã®åé¡
HTTPããããŒã¯ä»¥äžã®ã«ããŽãªã«åé¡ãããŸãã
- æ±çšããããŒã»äžè¬ããããŒïŒGeneral HeaderïŒ
- HTTPãªã¯ãšã¹ããšHTTPã¬ã¹ãã³ã¹ã®äž¡æ¹ã§äœ¿çšãããããããŒã
- äŸ:
Cache-Control
,Connection
,Date
- ãªã¯ãšã¹ãããããŒïŒRequest HeaderïŒ
- HTTPãªã¯ãšã¹ããŠäœ¿çšãããããããŒã
- ã¯ã©ã€ã¢ã³ããããµãŒããŒã«éä¿¡ãããæ å ±ãå«ãã§ããã
- äŸ:
Accept
,Authorization
,User-Agent
- ã¬ã¹ãã³ã¹ããããŒïŒResponse HeaderïŒ
- HTTPã¬ã¹ãã³ã¹ã«ãŠå©çšãããããããŒã
- ãµãŒããŒããã¯ã©ã€ã¢ã³ãã«éä¿¡ãããæ å ±ãå«ãã§ããã
- äŸ:
Server
,Set-Cookie
- 衚çŸããããŒïŒRepresentation HeaderïŒ
- ãªãœãŒã¹ã®è¡šçŸã«é¢ããæ å ±ãæäŸããããããŒã
- äŸ:
Content-Length
,Content-Range
以åã¯ããšã³ãã£ãã£ããããŒïŒEntity HeaderïŒããšããã«ããŽãªããããããã¯ãšã³ãã£ãã£ïŒãªã¯ãšã¹ããã¬ã¹ãã³ã¹ã®ã¡ãã»ãŒãžããã£ã«é¢ããæ å ±ïŒã瀺ãããããŒã§ãããããããçŸåšã®HTTP/1.1ã®ä»æ§ã§ã¯ããšã³ãã£ãã£ããããšã³ãã£ãã£ããããŒããšããçšèªã¯äœ¿ãããªããªããäžéšã®ããããŒã¯ã衚çŸããããŒïŒRepresentation HeaderïŒããšããæ°ããã«ããŽãªã«åé¡ãããŠããŸãã
General HeaderïŒæ±çšããããŒïŒã®äžèЧ
HTTPããã㌠| 説æ |
Cache-Control | HTTP/1.1ã§ãã©ãŠã¶ããããã·ãã³ã³ãã³ããã©ã®ããã«ãã£ãã·ã¥ããããå¶åŸ¡ããããã㌠|
Connection | TCPã³ãã¯ã·ã§ã³ãåæãããç¶æããããæå®ããããã㌠|
Date | HTTPã¡ãã»ãŒãžãäœæãŸãã¯éä¿¡ãããæ¥æã瀺ãããã㌠|
Pragma | HTTP/1.0ã§ãã£ãã·ã¥å¶åŸ¡ãè¡ãããã®ããã㌠|
Trailer | ãã£ã³ã¯è»¢éãšã³ã³ãŒãã£ã³ã°äœ¿çšæã«è¿œå ã®ããããŒãæå®ããããã®ããã㌠|
Transfer-Encoding | HTTPã¡ãã»ãŒãžããã£ã®ãšã³ã³ãŒãæ¹åŒïŒå§çž®ãåå²ãªã©ïŒãæå®ããããã®ããã㌠|
Upgrade | HTTPæ¥ç¶ãWebSocketãHTTP/2ãHTTP/3ãªã©ã«ã¢ããã°ã¬ãŒãããããã®ããã㌠|
Via | HTTPã¡ãã»ãŒãžãçµç±ãããããã·ãã²ãŒããŠã§ã€ã®æ å ±ãèšé²ããããã®ããã㌠|
Warning | HTTPã¬ã¹ãã³ã¹ã«è¿œå æ å ±ãèŠåãæäŸãããã£ãã·ã¥ã®åé¡ãªã©ã瀺ãããã®ããã㌠|
Cache-Control
Cache-Control
ããããŒã¯ãHTTP/1.1éä¿¡ã«ãããŠããã©ãŠã¶ãäžéãµãŒããŒïŒãããã·ãCDNïŒãã³ã³ãã³ããã©ã®ããã«ãã£ãã·ã¥ããããå¶åŸ¡ããHTTPããããŒã§ããHTTP/1.0ã§ã¯Pragma
ããããŒããã£ãã·ã¥å¶åŸ¡ã«äœ¿çšãããŠããŸããããHTTP/1.1以éã§ã¯Cache-Control
ãæšå¥šãããŠããŸãã
Cache-Control
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Cache-ControlããããŒã®æ§æ
Cache-Control: <ãã£ã¬ã¯ãã£ã>
<ãã£ã¬ã¯ãã£ã>
- ãã£ãã·ã¥ã®ã«ãŒã«ãæå®ãããªãã·ã§ã³ïŒäŸ:
no-cache
,no-store
,public
,max-age=3600
ãªã©ïŒãæå®ããŸãã no-cache
- ãã£ãã·ã¥ãä¿åã§ãããããã£ãã·ã¥ãåå©çšããéã«ã¯ãåå©çšåã«ãã®ãã£ãã·ã¥ãæå¹ã§ããããšããªãªãžã³ãµãŒããŒã§ç¢ºèªããã
no-store
- ã³ã³ãã³ããäžåãã£ãã·ã¥ã«ä¿åããªããæ©å¯æ å ±ã«é©ããŠããŸãã
public
- ã©ã®ãã£ãã·ã¥ïŒãã©ãŠã¶ãCDNããããã·ïŒã§ãä¿åå¯èœã
max-age=<ç§æ°>
- ãã£ãã·ã¥ã®æå¹æéãæå®ïŒäŸ:
max-age=3600
ã¯1æéïŒã
- ãã£ãã·ã¥ã®æå¹æéãæå®ïŒäŸ:
- ãã£ãã·ã¥ã®ã«ãŒã«ãæå®ãããªãã·ã§ã³ïŒäŸ:
- è€æ°ã®ãªãã·ã§ã³ãã«ã³ã
,
ã§åºåã£ãŠæå®å¯èœ- äŸ;
Cache-Control: public, max-age=86400
- äŸ;
Connection
Connection
ããããŒã¯ãHTTPéä¿¡ã«ãããŠçŸåšã®TCPã³ãã¯ã·ã§ã³ã®æ±ããå¶åŸ¡ããHTTPããããŒã§ãããã®ããããŒã䜿çšããããšã§ãå¿çéä¿¡åŸã«TCPã³ãã¯ã·ã§ã³ãåæããããç¶æããããæå®ã§ããŸãã
ConnectionããããŒã®å€
Connection
ããããŒã«æå®å¯èœãªå€ã«ã¯ãkeep-alive
ãšclose
ããããŸãã
keep-alive
- çŸåšã®éä¿¡ãéä¿¡ããåŸãTCPã³ãã¯ã·ã§ã³ãç¶æããåŸç¶ã®éä¿¡ã§ãåå©çšããŸãã
close
- å¿çéä¿¡åŸã«TCPã³ãã¯ã·ã§ã³ãåæããŸãã
以äžã«Connection
ãããïŒã®å
·äœäŸã瀺ããŠããŸãã
Connection: keep-alive
Date
Date
ããããŒã¯ãHTTPã¡ãã»ãŒãžãäœæãŸãã¯éä¿¡ãããæ¥æã瀺ãHTTPããããŒã§ããHTTPãªã¯ãšã¹ãã§ã¯äœ¿çšãããããšã¯å°ãªããHTTPã¬ã¹ãã³ã¹ã«ãããŠããµãŒããŒãã¬ã¹ãã³ã¹ãçæããæ¥æã瀺ãéã«äœ¿çšããããšãå€ãã§ãã
Date
ããããŒã®æ§æã¯ä»¥äžã®ããã«ãªã£ãŠãããæ¥æã¯ã°ãªãããžæšæºæïŒGMTïŒã§èšè¿°ãããŸãã
Date: <ææ¥>, <æ¥> <æ> <幎> <æ>:<å>:<ç§> GMT
äŸãã°ã2025幎1æ26æ¥ã®9æã«äœæãããHTTPã¡ãã»ãŒãžã®å ŽåãDate
ããããŒã¯ä»¥äžã®ããã«ãªããŸãã
Date: Fri, 26 Jan 2025 09:00:00 GMT
Pragma
Pragma
ããããŒã¯ãHTTP/1.0ã§ãã£ãã·ã¥å¶åŸ¡ãè¡ãããã«äœ¿çšãããããããŒã§ããHTTP/1.1以éã§ã¯Cache-Control
ããããŒãæšå¥šãããŠããŸãããåŸæ¹äºææ§ã®ããã«Pragma
ãåŒãç¶ããµããŒããããŠããŸãã
PragmaããããŒã®å€
Pragma
ããããŒã«æå®å¯èœãªå€ã«ã¯ãno-cache
ããããŸãã
no-cache
Cache-Control: no-cache
ãšåãã§ãã
以äžã«Pragma
ãããïŒã®å
·äœäŸã瀺ããŠããŸãã
Pragma: no-cache
Trailer
Trailer
ããããŒã¯ãHTTPéä¿¡ã§ãã£ã³ã¯è»¢éãšã³ã³ãŒãã£ã³ã°ïŒchunked transfer encodingïŒã䜿çšãããå Žåã«ãã¡ãã»ãŒãžã®æ«å°Ÿã«å«ãŸãã远å ããããŒãæå®ããããã®HTTPããããŒã§ããTrailer
ããããŒã¯ãTransfer-Encoding: chunked
ã䜿çšãããå Žåã«ã®ã¿æå³ãæã¡ãŸãã
Trailer
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ãã¯Trailer: Content-MD5
ã§ã¡ãã»ãŒãžã®æ«å°Ÿã« Content-MD5
ããããŒã远å ãããããšãéç¥ããŠããŸãã
POST /upload HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
Trailer: Content-MD5
4
Wiki
5
pedia
0
Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==
Transfer-Encoding
Transfer-Encoding
ããããŒã¯ãHTTPã¡ãã»ãŒãžããã£éšåã®ãšã³ã³ãŒãæ¹åŒãæå®ããããã«äœ¿çšãããHTTPããããŒã§ãããã®ãšã³ã³ãŒãæ¹åŒã¯ãããŒã¿ãã©ã®ããã«å å·¥ããŠéä¿¡ãããïŒå§çž®ãåå²ãªã©ïŒã決ããŸãã
Transfer-EncodingããããŒã®å€
Transfer-Encoding
ããããŒã«æå®å¯èœãªå€ã«ã¯ãchunked
ãgzip
ãidentity
ãªã©ããããŸãã
chunked
- ããŒã¿ãããã£ã³ã¯ïŒå¡ïŒãã«åå²ããŠéä¿¡ããã
gzip
- ããŒã¿ãgzip圢åŒã«å§çž®ããŠéä¿¡ããã
- å§çž®æ¹åŒã®æå®ã«ã€ããŠã¯ãçŸåšã¯
Content-Encoding
ããããŒã§æå®ããã®ãäžè¬çã§ãã
identity
- ãšã³ã³ãŒããè¡ãããå ã®ããŒã¿ããã®ãŸãŸéä¿¡ããŸãããããããã©ã«ãã§ãã
以äžã«Transfer-Encoding
ãããïŒã®äœ¿çšäŸã瀺ããŠããŸãã
Transfer-Encoding: chunked
Transfer-Encoding
ããããŒãæå®ãããŠããªãå ŽåãHTTPã¡ãã»ãŒãžããã£ã¯ããã®ãŸãŸéä¿¡ããããã®ãããã©ã«ãã§ãããã®å Žåãããã£ã®ãµã€ãºãContent-Length
ããããŒã§æç€ºããå¿
èŠããããŸãã
Upgrade
Upgrade
ããããŒã¯ãHTTP/1.1ã®æ¥ç¶ãå¥ã®ãããã³ã«ã«ã¢ããã°ã¬ãŒããããå Žåã«äœ¿çšããHTTPããããŒã§ãããã®ããããŒã䜿ãããšã§ãã¯ã©ã€ã¢ã³ãããµãŒããŒã«å¯ŸããŠå¥ã®ãããã³ã«ãžã®ã¢ããã°ã¬ãŒããèŠæ±ã§ããŸãã
HTTP/1.1ããWebSocketãžã®åãæ¿ãããHTTP/1.1ããHTTP/2ïŒh2cïŒãHTTP/3ã«åãæ¿ãããå Žåã«äœ¿çšãããŸãããã ããHTTP/2ãHTTP/3ã§ã¯ãéåžžALPNïŒApplication-Layer Protocol NegotiationïŒãå©çšããããããUpgrade
ããããŒã¯äž»ã«WebSocketã«åãæ¿ããå Žåã«äœ¿çšããããŸãã
äŸãã°ãHTTP/1.1ããWebSocketã«åãæ¿ãããå Žåã以äžã®ãããªHTTPãªã¯ãšã¹ããšHTTPã¬ã¹ãã³ã¹ã«ãªããŸãã
HTTPãªã¯ãšã¹ãäŸ
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Upgrade: websocket
ã§ã¯ã©ã€ã¢ã³ãããããã³ã«ãWebSocketã«åãæ¿ãããããšã瀺ããŠããŸããConnection: Upgrade
ã§Upgrade
ããããŒãæå¹ã«ããããšã瀺ããŸããSec-WebSocket-Key
ã¯ã¯ã©ã€ã¢ã³ããçæããã©ã³ãã ãªããŒã§ããµãŒããŒãæ£ããå¿çãçæããŠè¿ãããšã§éä¿¡ã®æ£åœæ§ãæ€èšŒããŸããSec-WebSocket-Version
ã¯ã¯ã©ã€ã¢ã³ãããµããŒãããŠããWebSocketãããã³ã«ã®ããŒãžã§ã³ïŒéåžžã¯13ïŒãæå®ããŸãã
HTTPã¬ã¹ãã³ã¹äŸ
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
ãµãŒããŒã¯101ã¹ããŒã¿ã¹ã³ãŒãïŒSwitching ProtocolsïŒãè¿ããWebSocketãžã®åãæ¿ããæ¿èªããŸããUpgrade: websocket
ã¯ãããã³ã«ãWebSocketã«åãæ¿ããããããšã瀺ããŸããSec-WebSocket-Accept
ã¯ã¯ã©ã€ã¢ã³ãããåãåã£ãSec-WebSocket-Key
ã«åºå®æåå258EAFA5-E914-47DA-95CA-C5AB0DC85B11
ãçµåããSHA-1ã§ããã·ã¥åããåŸã«Base64ãšã³ã³ãŒãããŠçæãããå€ã§ããããã«ãããã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®éä¿¡ãæ£åœã§ããããšãä¿èšŒããŸãã
Via
Via
ããããŒã¯ãHTTPãªã¯ãšã¹ããHTTPã¬ã¹ãã³ã¹ããããã·ãµãŒããŒãã²ãŒããŠã§ã€ãçµç±ããéã«ãçµç±ããããŒãã®æ
å ±ãèšé²ããããã®HTTPããããŒã§ãããã®æ
å ±ã¯ä»¥äžã®ç®çã§å©çšãããŸãã
- ã«ãŒãã®é²æ¢
- çµç±ããŒãã®æ å ±ã远å ãããããšã§ãåãããŒããäœåºŠãçµç±ããå Žåã«ã«ãŒããæ€åºå¯èœã
- éææ§
- ã¯ã©ã€ã¢ã³ãããµãŒããŒãçµç±ããŒãã®æ å ±ãææ¡ã§ããã
- ãããã°ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°
- çµç±ãããããã·ãã²ãŒããŠã§ã€ã®æ å ±ããããããã¯ãŒã¯äžã®åé¡ç®æãç¹å®å¯èœã
Via
ããããŒã®æ§æã以äžã«ç€ºããŸãã
ViaããããŒã®æ§æ
Via: <received-protocol> <received-by> [<comment>]
received-protocol
- çµç±ãããããã·ãã²ãŒããŠã§ã€ã䜿çšãããããã³ã«ã
- éåžžãHTTPããŒãžã§ã³ãæå®ãããŸãïŒäŸãã°ã çµç±ããŒããHTTP/1.1ã䜿çšããŠããå Žåã«ã¯ã
1.1
ãšãªããŸãïŒã
received-by
- çµç±ããããŒãã®ãã¹ãåãŸãã¯IPã¢ãã¬ã¹ã
comment
ïŒä»»æïŒ- ããŒãã«é¢ããè¿œå æ å ±ãçç¥å¯èœã
Via
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
åäžãããã·ãçµç±ããå Žå
Via: 1.1 example.com (Apache/2.4.41)
1.1
: çµç±ããŒããHTTP/1.1ã䜿çšãexample.com
: çµç±ããŒãã®ãã¹ãåã(Apache/2.4.41)
: çµç±ããŒãã®ãµãŒããŒæ å ±ïŒã³ã¡ã³ãéšåïŒã
è€æ°ã®ãããã·ãçµç±ããå Žå
Via: 1.1 example.com, 1.0 proxy1.example.net (Squid/3.5)
1.1 example.com
: æåã«çµç±ãããããã·ãHTTP/1.1ã䜿çšã1.0 proxy1.example.net (Squid/3.5)
: 次ã«çµç±ãããããã·ãHTTP/1.0ã䜿çšã
ãã®ããã«ãHTTPãªã¯ãšã¹ããHTTPã¬ã¹ãã³ã¹ãè€æ°ã®ãããã·ãµãŒããŒãçµç±ããå ŽåãVia
ããããŒã«ã¯ãã¹ãŠã®çµç±æ
å ±ãã«ã³ãã§åºåãããŠå«ãŸããŸãã
Warning
Warning
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«è¿œå æ
å ±ãèŠåãæäŸããããã«äœ¿çšãããããããŒã§ããäž»ã«ã¬ã¹ãã³ã¹ã®ç¶æ
ããã£ãã·ã¥ã®åé¡ç¹ã瀺ãããã«å©çšãããŸãã
Warning
ããããŒã®æ§æã以äžã«ç€ºããŸãã
ViaããããŒã®æ§æ
Warning: <ã³ãŒãçªå·> <ãšãŒãžã§ã³ã> "<èŠåããã¹ã>" [<æ¥ä»>]
ã³ãŒãçªå·
- èŠåã®çš®é¡ã瀺ã3æ¡ã®ã³ãŒãã
- 110ïŒã¬ã¹ãã³ã¹ããå€ããïŒéå»ã®ããŒã¿ãæäŸïŒã
- 113ïŒãã£ãã·ã¥ãæéåãïŒéå»ã«ä¿åãããããŒã¿ïŒã
ãšãŒãžã§ã³ã
- èŠåãçæãããµãŒããŒããããã·ã®æ å ±ïŒäŸ: ãã¹ãåïŒã
èŠåããã¹ã
- èŠåã¡ãã»ãŒãžã
æ¥ä»
ïŒä»»æïŒ- èŠåãçæãããæ¥æã
Warning
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
Warning: 113 example.net "Heuristic expiration"
113
: ãã£ãã·ã¥ã®æå¹æéãåããŠããå Žåã®èŠåãexample.net
: èŠåãçæãããããã·ã®æ å ±ã"Heuristic expiration"
: ããã©ã«ãã®æéãåããããšã瀺ãã¡ãã»ãŒãžã
Request HeaderïŒãªã¯ãšã¹ãããããŒïŒã®äžèЧ
HTTPããã㌠| 説æ |
Access-Control-Request-Method | CORSã®ããªãã©ã€ããªã¯ãšã¹ãã§ã䜿çšäºå®ã®HTTPã¡ãœããããµãŒããŒãžéç¥ããããã㌠|
Access-Control-Request-Headers | CORSã®ããªãã©ã€ããªã¯ãšã¹ãã§ãéä¿¡äºå®ã®ã«ã¹ã¿ã ããããŒããµãŒããŒãžéç¥ããããã㌠|
Accept | ã¯ã©ã€ã¢ã³ããåãå ¥ãå¯èœãªMIMEã¿ã€ãããµãŒããŒã«éç¥ããããã㌠|
Accept-Charset | ã¯ã©ã€ã¢ã³ããåãå ¥ãå¯èœãªæåãšã³ã³ãŒãã£ã³ã°ããµãŒããŒã«éç¥ããããã㌠|
Accept-Encoding | ã¯ã©ã€ã¢ã³ããåãå ¥ãå¯èœãªã³ã³ãã³ããšã³ã³ãŒãã£ã³ã°åœ¢åŒãéç¥ããããã㌠|
Accept-Language | ã¯ã©ã€ã¢ã³ããåãå ¥ãå¯èœãªèšèªïŒèªç¶èšèªïŒããµãŒããŒã«éç¥ããããã㌠|
Authorization | ãµãŒããŒã«å¯ŸããŠèªèšŒæ å ±ãæäŸããããã㌠|
Cookie | ã¯ã©ã€ã¢ã³ãã«ä¿åãããCookieæ å ±ããµãŒããŒã«éä¿¡ããããã㌠|
Expect | ãªã¯ãšã¹ãããã£éä¿¡åã«ãµãŒããŒã®åãå ¥ãå¯åŠã確èªããããã㌠|
From | ã¯ã©ã€ã¢ã³ãã®ã¡ãŒã«ã¢ãã¬ã¹ã瀺ãããã㌠|
Host | ãªã¯ãšã¹ãå ã®ãµãŒããŒã®ãã¹ãåãšããŒãçªå·ãæå®ããããã㌠|
If-Modified-Since | æå®æ¥æä»¥éã«ãªãœãŒã¹ã倿ŽãããŠããã°ååŸãããããµãŒããŒã«æç€ºããããã㌠|
If-Match | ãªãœãŒã¹ãç¹å®ã®ETagå€ãšäžèŽããå Žåã®ã¿ãªãœãŒã¹ãžã®åŠçïŒåé€ãªã©ïŒãèš±å¯ããããã㌠|
If-None-Match | ãªãœãŒã¹ãç¹å®ã®ETagå€ãšç°ãªãå Žåã®ã¿ãªãœãŒã¹ãžã®åŠçïŒååŸãªã©ïŒãèš±å¯ããããã㌠|
If-Range | ãªãœãŒã¹ã倿ŽãããŠããªããã°ç¯å²ãªã¯ãšã¹ããèš±å¯ãã倿Žãããã°å šäœãååŸããããã㌠|
If-Unmodified-Since | æå®æ¥æä»¥éã«ãªãœãŒã¹ã倿ŽãããŠããªãå Žåã®ã¿ãªã¯ãšã¹ããå®è¡ããããã㌠|
Max-Forwards | ãªã¯ãšã¹ããçµç±ã§ãããããã·ãã²ãŒããŠã§ã€ã®æå€§æ°ãå¶éããããã㌠|
Origin | ãªã¯ãšã¹ãã®éä¿¡å ã瀺ããCORSã®å€å®ã«äœ¿çšãããããã㌠|
Proxy-Authorization | ãããã·ãµãŒããŒãéãããªã¯ãšã¹ãã®éã«èªèšŒæ å ±ãæäŸããããã®ããã㌠|
Range | ãªãœãŒã¹ã®äžéšïŒç¹å®ç¯å²ïŒãååŸããããã®ããã㌠|
Referer | ãªã¯ãšã¹ããçºçããå ã®ããŒãžã®URLã瀺ãããã㌠|
Upgrade-Insecure-Requests | HTTPããHTTPSãžã®ã¢ããã°ã¬ãŒããåžæããããšããµãŒããŒã«éç¥ããããã㌠|
TE | ã¯ã©ã€ã¢ã³ããåãå ¥ãå¯èœãªè»¢éãšã³ã³ãŒãã£ã³ã°ã®åœ¢åŒãæå®ããããã㌠|
User-Agent | ã¯ã©ã€ã¢ã³ãã®æ å ±ïŒãã©ãŠã¶ãOSçïŒããµãŒããŒã«éç¥ããããã㌠|
X-Forwarded-Host | ãããã·çµç±æã«ã¯ã©ã€ã¢ã³ãã®éä¿¡å ãã¹ãåãWebãµãŒããŒã«äŒããããã㌠|
X-Forwarded-For | ãããã·çµç±æã«ã¯ã©ã€ã¢ã³ãã®éä¿¡å IPã¢ãã¬ã¹ãWebãµãŒããŒã«äŒããããã㌠|
Access-Control-Request-Method
Access-Control-Request-Method
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãCORSïŒCross-Origin Resource SharingïŒã®ããªãã©ã€ããªã¯ãšã¹ãã§äœ¿çšãããHTTPããããŒã§ããã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãã©ãŠã¶ïŒããç¹å®ã®ãªãœãŒã¹ã«å¯ŸããŠã©ã®HTTPã¡ãœããïŒäŸ: GET, POST, DELETEãªã©ïŒã䜿çšããäºå®ã§ãããããäºåã«ãµãŒããŒãžéç¥ããŸãã
Access-Control-Request-Method
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Method: DELETE
OPTIONS
: ããªãã©ã€ããªã¯ãšã¹ãã¯éåžžOPTIONSã¡ãœããã§éä¿¡ãããŸããOrigin
: ãªã¯ãšã¹ããçºè¡ããŠãããªãªãžã³ãAccess-Control-Request-Method: DELETE
: ã¯ã©ã€ã¢ã³ããæ¬ãªã¯ãšã¹ãã§DELETEã¡ãœããã䜿çšããäºå®ã§ããããšãéç¥ã
HTTPã¬ã¹ãã³ã¹äŸ
HTTP/1.1 204 No Content
Access-Control-Allow-Methods: GET, POST, DELETE
Access-Control-Allow-Origin: https://client.example
204 No Content
: ããªãã©ã€ããªã¯ãšã¹ããæåããæå®ãããã¡ãœãããèš±å¯ãããŠãããAccess-Control-Allow-Methods
: ãµãŒããŒãèš±å¯ããHTTPã¡ãœããã®ãªã¹ãã瀺ããAccess-Control-Allow-Origin
: æå®ããããªãªãžã³ïŒäŸ:https://client.example
ïŒããã®ãªã¯ãšã¹ããèš±å¯ã
Access-Control-Request-Method
ã¯ãªã¯ãšã¹ãããããŒã§ãããã¯ã©ã€ã¢ã³ãããµãŒããŒã«éç¥ããããã®ãã®ã§ãããµãŒããŒãèš±å¯ããã¡ãœããã¯Access-Control-Allow-Methods
ã¬ã¹ãã³ã¹ããããŒã§å¿çããŸãã
Access-Control-Request-Headers
Access-Control-Request-Headers
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãCORSïŒCross-Origin Resource SharingïŒã®ããªãã©ã€ããªã¯ãšã¹ãã§äœ¿çšãããHTTPããããŒã§ããã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãã©ãŠã¶ïŒãããµãŒããŒã«å¯ŸããŠãå®éã®ãªã¯ãšã¹ãã§éä¿¡äºå®ã®ã«ã¹ã¿ã HTTPããããŒããäºåã«éç¥ããããã«å©çšãããŸãã
Access-Control-Request-Headers
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Headers: Authorization, X-Custom-Header
OPTIONS
: ããªãã©ã€ããªã¯ãšã¹ãã¯éåžžOPTIONS
ã¡ãœããã§éä¿¡ãããŸããOrigin
: ãªã¯ãšã¹ããçºè¡ããŠãããªãªãžã³ãAccess-Control-Request-Headers
: ã¯ã©ã€ã¢ã³ããæ¬ãªã¯ãšã¹ãã§éä¿¡äºå®ã®ããããŒïŒããã§ã¯Authorization
ãšX-Custom-Header
ïŒã
HTTPã¬ã¹ãã³ã¹äŸ
HTTP/1.1 204 No Content
Access-Control-Allow-Headers: Authorization, X-Custom-Header
Access-Control-Allow-Origin: https://client.example
204 No Content
: ããªãã©ã€ããªã¯ãšã¹ããæåããæå®ãããããããŒãèš±å¯ãããŠãããAccess-Control-Allow-Headers
: ãµãŒããŒãèš±å¯ããHTTPããããŒããªã¹ãã¢ãããAccess-Control-Allow-Origin
: æå®ããããªãªãžã³ïŒäŸ:https://client.example
ïŒããã®ãªã¯ãšã¹ããèš±å¯ã
Access-Control-Request-Headers
ã¯ãªã¯ãšã¹ãããããŒã§ãããã¯ã©ã€ã¢ã³ãããµãŒããŒã«éç¥ããããã®ãã®ã§ãããµãŒããŒãèš±å¯ããããããŒã¯Access-Control-Allow-Headers
ã¬ã¹ãã³ã¹ããããŒã§å¿çããŸãã
Accept
Accept
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ããåãå
¥ãå¯èœãªMIMEã¿ã€ãïŒã¡ãã£ã¢ã¿ã€ãïŒããµãŒããŒã«éç¥ããHTTPããããŒã§ãããã®æ
å ±ãå
ã«ããµãŒããŒã¯ã¯ã©ã€ã¢ã³ããåžæãã圢åŒã§ã¬ã¹ãã³ã¹ãè¿ãããšãã§ããŸãã
Accept
ããããŒã®æ§æã以äžã«ç€ºããŸãã
AcceptããããŒã®æ§æ
Accept: <ã¡ãã£ã¢ã¿ã€ã>[;q=<å質å€>], ...
<ã¡ãã£ã¢ã¿ã€ã>
- åãå
¥ãå¯èœãªã¡ãã£ã¢ã¿ã€ãïŒäŸ:
application/json
,text/html
ïŒã
- åãå
¥ãå¯èœãªã¡ãã£ã¢ã¿ã€ãïŒäŸ:
q=<å質å€>
ïŒä»»æïŒ- åªå 床ã瀺ãå€ïŒ1.0ãæãé«ããããã©ã«ãã¯1.0ïŒã
Accept
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
JSONãåãå ¥ããå Žå
Accept: application/json
ã¯ã©ã€ã¢ã³ãã¯application/json
圢åŒã®ããŒã¿ãåžæã
è€æ°ã®ã¡ãã£ã¢ã¿ã€ããæå®ããå Žå
Accept: text/html, application/json
ã¯ã©ã€ã¢ã³ãã¯text/html
ãŸãã¯application/json
ã®ãããããåžæã
åªå 床ãæå®ããå Žå
Accept: application/json;q=0.9, text/html;q=0.8, */*;q=0.1
application/json
ïŒæåªå
ïŒãtext/html
ïŒæ¬¡ç¹ïŒããã®ä»ã®åœ¢åŒïŒæäœåªå
床ïŒã®é çªã§åžæããŠããŸãã
ãµãŒããŒã¯ãAccept
ããããŒãæå®ãããŠããªãå Žåãéåžžã¯ããã©ã«ãã®åœ¢åŒïŒäŸ: text/html
ïŒã§ã¬ã¹ãã³ã¹ãè¿ããŸãã
Accept-Charset
Accept-Charset
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãã©ãŠã¶ïŒãåãå
¥ãå¯èœãªæåã»ããïŒæåãšã³ã³ãŒãã£ã³ã°ïŒããµãŒããŒã«éç¥ããããã®HTTPããããŒã§ãããã®æ
å ±ãåºã«ããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãããµããŒãããæåãšã³ã³ãŒãã£ã³ã°ã§ã¬ã¹ãã³ã¹ãè¿ããŸãã
Accept-Charset
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Accept-CharsetããããŒã®æ§æ
Accept-Charset: <æåã»ãã>[;q=<å質å€>], ...
<æåã»ãã>
- ã¯ã©ã€ã¢ã³ããåãå
¥ããæåãšã³ã³ãŒãã£ã³ã°ïŒäŸ:
UTF-8
,ISO-8859-1
ïŒã
- ã¯ã©ã€ã¢ã³ããåãå
¥ããæåãšã³ã³ãŒãã£ã³ã°ïŒäŸ:
q=<å質å€>
ïŒä»»æïŒ- åªå 床ã瀺ãå€ïŒ1.0ãæãé«ããããã©ã«ãã¯1.0ïŒã
Accept-Charset
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
UTF-8ã®ã¿ãåãå ¥ããå Žå
Accept-Charset: UTF-8
ã¯ã©ã€ã¢ã³ãã¯UTF-8
ãšã³ã³ãŒãã£ã³ã°ã®ã¿åãå
¥ããã
è€æ°ã®æåã»ãããæå®ããå Žå
Accept-Charset: UTF-8, ISO-8859-1
ã¯ã©ã€ã¢ã³ãã¯UTF-8
ãŸãã¯ISO-8859-1
ã®ã©ã¡ããã®ã¿åãå
¥ãããåªå
åºŠã¯æç€ºãããŠããªããããåãæ±ãã
åªå 床ãæå®ããå Žå
Accept-Charset: UTF-8;q=1.0, ISO-8859-1;q=0.8, *;q=0.1
UTF-8
ïŒæåªå
ïŒãISO-8859-1
ïŒæ¬¡ç¹ïŒããã®ä»ãã¹ãŠã®æåã»ããïŒæäœåªå
床ïŒã®é çªã§åãå
¥ããã
çŸä»£ã®Webç°å¢ã§ã¯ãã»ãšãã©ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒãããã©ã«ãã§UTF-8
ã䜿çšããããããã®ããããŒãæå®ãããããšã¯å°ãªããªã£ãŠããŸãã
Accept-Encoding
Accept-Encoding
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ããåãå
¥ãå¯èœãªã³ã³ãã³ããšã³ã³ãŒãã£ã³ã°åœ¢åŒïŒgzipãªã©ïŒããµãŒããŒã«éç¥ããããã®HTTPããããŒã§ãããµãŒããŒã¯ããã®æ
å ±ãåºã«ã¯ã©ã€ã¢ã³ãã察å¿å¯èœãªåœ¢åŒã§å§çž®ããã¬ã¹ãã³ã¹ãè¿ããŸãã
Accept-Encoding
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Accept-EncodingããããŒã®æ§æ
Accept-Encoding: <ãšã³ã³ãŒãã£ã³ã°åœ¢åŒ>[;q=<å質å€>], ...
<ãšã³ã³ãŒãã£ã³ã°åœ¢åŒ>
- ã¯ã©ã€ã¢ã³ããåãå
¥ãããšã³ã³ãŒãã£ã³ã°ã®åœ¢åŒïŒäŸ:
gzip
,br
ïŒã
- ã¯ã©ã€ã¢ã³ããåãå
¥ãããšã³ã³ãŒãã£ã³ã°ã®åœ¢åŒïŒäŸ:
q=<å質å€>
ïŒä»»æïŒ- åªå 床ã瀺ãå€ïŒ1.0ãæãé«ããããã©ã«ãã¯1.0ïŒã
Accept-Encoding
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
gzipã®ã¿ãåãå ¥ããå Žå
Accept-Encoding: gzip
ã¯ã©ã€ã¢ã³ãã¯gzip
圢åŒã®å§çž®ããŒã¿ã®ã¿åãå
¥ããã
è€æ°ã®ãšã³ã³ãŒãã£ã³ã°åœ¢åŒãæå®ããå Žå
Accept-Encoding: gzip, deflate, br
ã¯ã©ã€ã¢ã³ãã¯gzip
ãdeflate
ãbr
ã®ããããã®ã¿åãå
¥ãããåªå
åºŠã¯æç€ºãããŠããªããããåãæ±ãã
åªå 床ãæå®ããå Žå
Accept-Encoding: br;q=1.0, gzip;q=0.8, identity;q=0.5
br
ïŒæåªå
ïŒãgzip
ïŒæ¬¡ç¹ïŒãå§çž®ãªãïŒidentity
ïŒã®é çªã§åãå
¥ããã
Accept-Encoding
ããããŒãæå®ãããªãå ŽåããµãŒããŒã¯éåžžãããŒã¿ãå§çž®ããã«éä¿¡ããŸãããŸãããµãŒããŒãæå®ããã圢åŒããµããŒãããŠããªãå Žåãå§çž®ãããªãã¬ã¹ãã³ã¹ãè¿ããŸãã
Accept-Language
Accept-Language
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãã©ãŠã¶ïŒãåãå
¥ãå¯èœãªèšèªïŒèªç¶èšèªïŒããµãŒããŒã«éç¥ããããã®HTTPããããŒã§ãããµãŒããŒã¯ãã®æ
å ±ãåºã«ãã¯ã©ã€ã¢ã³ããåžæããèšèªã§ã³ã³ãã³ããè¿ãããã«å¯Ÿå¿ããŸãããµãŒããå€åœèªã«å¯Ÿå¿ããŠãããšããªã©ã«äœ¿ããŸãã
Accept-Language
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Accept-LanguageããããŒã®æ§æ
Accept-Language: <èšèªã³ãŒã>[;q=<å質å€>], ...
<èšèªã³ãŒã>
- èšèªã³ãŒãïŒäŸ:
en
,ja
,fr
ïŒãå¿ èŠã«å¿ããŠå°åã³ãŒãïŒäŸ:en-US
,en-GB
ïŒãå«ããããšãå¯èœã§ãã
- èšèªã³ãŒãïŒäŸ:
q=<å質å€>
ïŒä»»æïŒ- åªå 床ã瀺ãå€ïŒ1.0ãæãé«ããããã©ã«ãã¯1.0ïŒã
Accept-Language
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
æ¥æ¬èªã®ã¿ãåãå ¥ããå Žå
Accept-Language: ja
ã¯ã©ã€ã¢ã³ãã¯æ¥æ¬èªïŒja
ïŒã®ã¿ãåãå
¥ããã
è€æ°ã®ãšã³ã³ãŒãã£ã³ã°åœ¢åŒãæå®ããå Žå
Accept-Language: en, ja
ã¯ã©ã€ã¢ã³ãã¯è±èªïŒen
ïŒãŸãã¯æ¥æ¬èªïŒja
ïŒã®ããããã®ã¿åãå
¥ãããåªå
åºŠã¯æç€ºãããŠããªããããåãæ±ãã
åªå 床ãæå®ããå Žå
Accept-Language: ja;q=1.0, en;q=0.8, fr;q=0.6
æ¥æ¬èªïŒjaïŒãè±èªïŒenïŒããã©ã³ã¹èªïŒfr
ïŒã®é çªã§åãå
¥ããã
ãã¹ãŠã®èšèªãåãå ¥ããå Žå
Accept-Language: *
ã¯ã©ã€ã¢ã³ãã¯ã©ã®èšèªã§ãåãå ¥ããã
Authorization
Authorization
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠããµãŒããŒã«å¯ŸããŠèªèšŒæ
å ±ãæäŸããããã«äœ¿çšãããHTTPããããŒã§ãããã®æ
å ±ãåºã«ããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã®ãªã¯ãšã¹ããèš±å¯ãŸãã¯æåŠããŸãããµãŒããŒãWWW-Authenticate
ã¬ã¹ãã³ã¹ããããŒãéããŠèªèšŒãèŠæ±ããå Žåãã¯ã©ã€ã¢ã³ãã¯Authorization
ããããŒã䜿çšããŠå¿çããŸãã
Authorization
ããããŒã®æ§æã以äžã«ç€ºããŸãã
AuthorizationããããŒã®æ§æ
Authorization: <ã¹ããŒã > <èªèšŒæ
å ±>
<ã¹ããŒã >
- èªèšŒæ¹åŒïŒäŸ:
Basic
,Bearer
ïŒã
- èªèšŒæ¹åŒïŒäŸ:
<èªèšŒæ å ±>
- èªèšŒã¹ããŒã ã«åºã¥ãèªèšŒããŒã¿ïŒäŸ: ãšã³ã³ãŒããããæååãããŒã¯ã³ïŒ
Authorization
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
BasicèªèšŒ
ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããBase64ã§ãšã³ã³ãŒãããŠéä¿¡ããŸãã
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
dXNlcm5hbWU6cGFzc3dvcmQ=
ã¯ãusername:password
ãBase64ã§ãšã³ã³ãŒãããæååã§ãã
BearerããŒã¯ã³èªèšŒ
ã¢ã¯ã»ã¹ããŒã¯ã³ã䜿çšããŠãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŸãïŒOAuth 2.0ãªã©ã§äœ¿çšïŒã
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
ããŒã¯ã³ïŒeyJhbGciOiJIUzI1NiIs...
ïŒã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ãJWTïŒJSON Web TokenïŒãªã©ã§ãã
APIããŒèªèšŒïŒç¬èªã®èªèšŒã¹ããŒã ïŒ
ãµãŒããŒãç¹å®ã®ããŒãèªèšŒæ å ±ãšããŠèŠæ±ããå Žåã§ãã
Authorization: ApiKey abc123xyz456
abc123xyz456
ã¯APIããŒã§ãã
Cookie
Cookie
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãã©ãŠã¶ïŒã«ä¿åãããŠããCookieæ
å ±ããµãŒããŒã«éä¿¡ããããã®HTTPããããŒã§ãããµãŒããŒã¯ãã®æ
å ±ãå©çšããŠãã»ãã·ã§ã³ç®¡çããŠãŒã¶ãŒæ
å ±ã®è¿œè·¡ãè¡ããŸãã
Cookie
ããããŒã®æ§æã以äžã«ç€ºããŸãã
CookieããããŒã®æ§æ
Cookie: <ããŒ1>=<å€1>; <ããŒ2>=<å€2>; ...
<ããŒ>
- Cookieåã
<å€>
- Cookieã«ä¿åãããå€ã
Cookie
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
åäžã®Cookieãéä¿¡
Cookie: sessionId=abc123
ã¯ã©ã€ã¢ã³ãã¯sessionId
ãšããååã®Cookieã«å€abc123
ãèšå®ããŠéä¿¡ããŸãã
è€æ°ã®Cookieãéä¿¡
Cookie: sessionId=abc123; userPref=darkMode
è€æ°ã®ããŒãšå€ã®ãã¢ãã»ãã³ãã³ïŒ;
ïŒã§åºåã£ãŠéä¿¡ããŸãã
Expect
Expect
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠããªã¯ãšã¹ãããã£ãéä¿¡ããåã«ãµãŒããŒããã®ãªã¯ãšã¹ããåãå
¥ãããã確èªããéã«äœ¿çšããHTTPããããŒã§ããäž»ã«å€§ããªãªã¯ãšã¹ãããã£ãéä¿¡ããåãªã©ã«äœ¿çšãããŸãããµãŒããŒããã®ãªã¯ãšã¹ããåãå
¥ããããå Žåã¯ã100 Continue
ã¹ããŒã¿ã¹ã³ãŒããè¿ããŸãã
Expect
ããããŒã®æ§æã以äžã«ç€ºããŸãã
ExpectããããŒã®æ§æ
Expect: <æåŸ
ããåäœ>
Expect
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
100-Continueãæå®ããå Žå
ã¯ã©ã€ã¢ã³ãã倧ããªãªã¯ãšã¹ãããã£ãéä¿¡ããéã«ããµãŒããŒããã®ãªã¯ãšã¹ããåãå ¥ããã確èªãããå Žåã«ã¯ã以äžã®ãããªHTTPãªã¯ãšã¹ããéããŸãã
POST /upload HTTP/1.1
Host: example.com
Content-Length: 1048576
Expect: 100-Continue
ãµãŒããŒãæåŸ
ã以äžã«ç€ºãããã«100 Continue
ãè¿ãã°ãã¯ã©ã€ã¢ã³ãã¯ãªã¯ãšã¹ãããã£ãéä¿¡ããŸãããµãŒããŒããšã©ãŒãè¿ããå Žåãã¯ã©ã€ã¢ã³ãã¯ãªã¯ãšã¹ãããã£ãéä¿¡ããã«åŠçãçµäºããŸãã
HTTP/1.1 100 Continue
è£è¶³
- å€ãã®ã¯ã©ã€ã¢ã³ãïŒäŸ: ãã©ãŠã¶ïŒã¯
Expect
ããããŒãæç€ºçã«æå®ããŸããããäžéšã®ã©ã€ãã©ãªãããŒã«ã§ã¯å€§ããªããŒã¿ãéä¿¡ããéã«èªåçã«ä»å ãããŸãã - ãµãŒããŒã
Expect: 100-Continue
ããµããŒãããŠããªãå Žåã417 Expectation Failed
ãè¿ããŸãã
From
From
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠããªã¯ãšã¹ããéä¿¡ãããŠãŒã¶ãŒãŸãã¯ã¯ã©ã€ã¢ã³ãã®ã¡ãŒã«ã¢ãã¬ã¹ã瀺ãããã«äœ¿çšãããHTTPããããŒã§ããäž»ã«ãèªååãããã¯ã©ã€ã¢ã³ãïŒããããã¯ããŒã©ãŒãªã©ïŒãèªããèå¥ããç®çã§äœ¿çšãããŸãã
From
ããããŒã®æ§æã以äžã«ç€ºããŸãã
FromããããŒã®æ§æ
From: <ã¡ãŒã«ã¢ãã¬ã¹>
From
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
ãããã®ãªã¯ãšã¹ãã«ãããäŸ
以äžã®HTTPãªã¯ãšã¹ãã¯ãbot@example.com
ãšããã¡ãŒã«ã¢ãã¬ã¹ãæã€ã¯ã©ã€ã¢ã³ãïŒãããïŒããéä¿¡ãããŠããŸãã
GET /example HTTP/1.1
Host: example.com
From: bot@example.com
è£è¶³
- ã¡ãŒã«ã¢ãã¬ã¹ã¯å人æ
å ±ã«è©²åœããããã
From
ããããŒã䜿çšããéã¯æ³šæãå¿ èŠã§ããèªååãããã·ã¹ãã ããããã§ã®ã¿å©çšããã®ãäžè¬çã§ãã
Host
Host
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠããªã¯ãšã¹ãå
ã®ãµãŒããŒã®ãã¹ãåïŒDNSåãŸãã¯IPã¢ãã¬ã¹ïŒãšããŒãçªå·ãæå®ããHTTPããããŒã§ããHTTP/1.1ã§ã¯ããã¹ãŠã®ãªã¯ãšã¹ãã«ãããŠãã®ããããŒãå¿
é ãšããŠããŸããããŒãçªå·ã¯çç¥å¯èœã§ããçç¥ããå ŽåãHTTPéä¿¡ã§ã¯ã80ããHTTPSéä¿¡ã§ã¯ã443ããé©çšãããŸãã
Host
ããããŒã®æ§æã以äžã«ç€ºããŸãã
HostããããŒã®æ§æ
Host: <ãã¹ãå>[:<ããŒãçªå·>]
<ãã¹ãå>
- ãªã¯ãšã¹ãã®å®å
ãšãªããµãŒããŒã®ãã¹ãåïŒäŸ:
example.com
ïŒã
- ãªã¯ãšã¹ãã®å®å
ãšãªããµãŒããŒã®ãã¹ãåïŒäŸ:
<ããŒãçªå·>
ïŒä»»æïŒ- å¿
èŠã«å¿ããŠæå®ããããŒãçªå·ïŒäŸ:
:443
ïŒã
- å¿
èŠã«å¿ããŠæå®ããããŒãçªå·ïŒäŸ:
Host
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
ãã¹ãåã®ã¿ãæå®ããå Žå
Host: example.com
ããŒãçªå·ãçç¥ãããŠããã®ã§ïŒHTTPéä¿¡ã§ã¯ã80ããHTTPSéä¿¡ã§ã¯ã443ãïŒã䜿çšããŸãã
ãã¹ãåãšããŒãçªå·ãæå®ããå Žå
Host: example.com:8080
ããŒãçªå·8080
ãæç€ºçã«æå®ããŠããŸãã
è£è¶³
- HTTP/1.1ã§ã¯ããã¹ãŠã®ãªã¯ãšã¹ãã«ãããŠ
Host
ããããŒãå¿ é ã§ããããããªãå ŽåããµãŒããŒã¯ãªã¯ãšã¹ããæåŠãããããšã©ãŒãè¿ãå¯èœæ§ããããŸãã - ãµãŒããŒãè€æ°ã®ãã¡ã€ã³ããã¹ãããŠããå Žåã
Host
ããããŒãåºã«é©åãªãªãœãŒã¹ãèå¥ããŸãã - HTTP/2ã§ã¯
Host
ããããŒã¯éæšå¥šã§ããã代ããã«:authority
ããããŒã䜿çšãããŸãã
If-Modified-Since
If-Modified-Since
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãæå®ããæ¥æä»¥éã«ãªãœãŒã¹ã倿ŽãããŠããå Žåã®ã¿ããã®ãªãœãŒã¹ãååŸãããããµãŒããŒã«æç€ºããHTTPããããŒã§ãã
If-Modified-Since
ããããŒã¯ã¯ã©ã€ã¢ã³ããããã£ãã·ã¥æžã¿ã®ãªãœãŒã¹ãææ°ã§ãããã確èªããããã«äœ¿çšããŸãããµãŒããŒã¯ãªãœãŒã¹ã®æçµæŽæ°æ¥æãšIf-Modified-Since
ã®æ¥æãæ¯èŒãããªãœãŒã¹ãæå®ããæ¥æä»¥éã«æŽæ°ãããŠããªãå ŽåããµãŒããŒã¯304 Not Modified
ãè¿ãããªãœãŒã¹ãåéããŸããã
If-Modified-Since
ããããŒã®æ§æã以äžã«ç€ºããŸãã
If-Modified-SinceããããŒã®æ§æ
If-Modified-Since: <æ¥æ>
<æ¥æ>
- ã¯ã©ã€ã¢ã³ããæã€ãã£ãã·ã¥ã®æçµååŸæ¥æïŒ
Date
ããããŒãšåã圢åŒïŒã
- ã¯ã©ã€ã¢ã³ããæã€ãã£ãã·ã¥ã®æçµååŸæ¥æïŒ
If-Modified-Since
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ã2025幎1æ24æ¥12:00:00以éã«ãªãœãŒã¹ã倿ŽãããŠããã°ãæ°ãããªãœãŒã¹ãèŠæ±ããŠããŸãã
GET /resource HTTP/1.1
Host: example.com
If-Modified-Since: Wed, 24 Jan 2025 12:00:00 GMT
HTTPã¬ã¹ãã³ã¹äŸ
ãªãœãŒã¹ãæŽæ°ãããŠããªãå ŽåããµãŒããŒã¯ãªãœãŒã¹ãåéããã304 Not Modified
ãè¿ããŸãã
HTTP/1.1 304 Not Modified
ãªãœãŒã¹ãæŽæ°ãããŠããå ŽåããµãŒããŒã¯æ°ãããªãœãŒã¹ãè¿ããLast-Modified
ããããŒã§ãªãœãŒã¹ã®æçµæŽæ°æ¥æãéç¥ããŸãã
HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Thu, 25 Jan 2025 14:30:00 GMT
If-Match
If-Match
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠããµãŒããŒäžã®ãªãœãŒã¹ãæŽæ°ãåé€ããåã«ããã®ãªãœãŒã¹ãç¹å®ã®ããŒãžã§ã³ïŒETagå€ïŒãšäžèŽããŠãããã確èªããããã«äœ¿çšãããHTTPããããŒã§ãã
If-Match
ããããŒã¯ãªãœãŒã¹ã®ç«¶åãé²ãããã«äœ¿çšãããŸãããªãœãŒã¹ãä»ã®ã¯ã©ã€ã¢ã³ãã«ãã£ãŠå€æŽãããŠããå Žåããªã¯ãšã¹ãã¯æåŠãããŸããããã«ãããããŒã¿ã®æŽåæ§ãä¿ã¡ã€ã€ãå®å
šãªãªãœãŒã¹æäœãå¯èœã«ãªããŸãã
If-Match
ããããŒã®æ§æã以äžã«ç€ºããŸãã
If-MatchããããŒã®æ§æ
If-Match: <ETagå€>[, <ETagå€> ...]
ETagå€
- ãªãœãŒã¹ã®ããŒãžã§ã³ãèå¥ããèå¥åïŒããã«ã¯ã©ãŒãã§å²ãïŒã
If-Match
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãETagã"123456789abcdef"
ã§ãããªãœãŒã¹ãæŽæ°ããããšããŠããŸãã
PUT /example-resource HTTP/1.1
Host: example.com
If-Match: "123456789abcdef"
Content-Type: application/json
{
"key": "new-value"
}
HTTPã¬ã¹ãã³ã¹äŸ
ETagãäžèŽããå Žåããªã¯ãšã¹ããæåããæ°ããETagå€ãè¿ãããŸãã
HTTP/1.1 200 OK
ETag: "987654321fedcba"
ETagãäžèŽããªãå Žåããªã¯ãšã¹ãã¯æåŠããããªãœãŒã¹ã¯å€æŽãããŸããã
HTTP/1.1 412 Precondition Failed
If-MatchããããŒã®äœ¿çšæé
- ãªãœãŒã¹ã®ååŸ
- ã¯ã©ã€ã¢ã³ãã¯ãGETãªã¯ãšã¹ããéä¿¡ããŠãªãœãŒã¹ãååŸããŸãã
- ãµãŒããŒã¯ã¬ã¹ãã³ã¹ã«ETagãå«ããŸãã
- æ¡ä»¶ä»ããªã¯ãšã¹ãã®éä¿¡
- ã¯ã©ã€ã¢ã³ãã¯ãåãåã£ãETagã
If-Match
ããããŒã«èšå®ããæ¡ä»¶ä»ãã®PUT
ãŸãã¯DELETE
ãªã¯ãšã¹ããéä¿¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãåãåã£ãETagã
- ãµãŒããŒã®åŠç
- ãµãŒããŒã¯ãªãœãŒã¹ã®ETagãš
If-Match
ã®å€ãæ¯èŒããŸãã - äžèŽããå Žå: ãªã¯ãšã¹ããåŠçããŸãã
- äžèŽããªãå Žå: ãªã¯ãšã¹ããæåŠãã
412 Precondition Failed
ãè¿ããŸãã
- ãµãŒããŒã¯ãªãœãŒã¹ã®ETagãš
If-None-Match
If-None-Match
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãæå®ããETagå€ãšãµãŒããŒäžã®ãªãœãŒã¹ã®ETagå€ãäžèŽããªãå Žåã«ã®ã¿ãªã¯ãšã¹ããå®è¡ããããæç€ºããHTTPããããŒã§ãã
äž»ã«GET
ãªã¯ãšã¹ãã«ãããŠããã£ãã·ã¥ãææ°ã§ãªãå Žåã«ã®ã¿ãæ°ãããªãœãŒã¹ãååŸããå ŽåããPOST/PUT/DELETE
ãªã¯ãšã¹ãã«ãããŠãç¹å®ã®ãªãœãŒã¹ãååšããªãéã«ã®ã¿åŠçãè¡ãå Žåã«äœ¿çšãããŸãã
If-None-Match
ããããŒã®æ§æã以äžã«ç€ºããŸãã
If-None-MatchããããŒã®æ§æ
If-None-Match: <ETagå€>[, <ETagå€> ...]
ETagå€
- ãªãœãŒã¹ã®ããŒãžã§ã³ãèå¥ããèå¥åïŒããã«ã¯ã©ãŒãã§å²ãïŒã
If-None-Match
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãETagã"123456789abcdef"
ã®ãªãœãŒã¹ã倿ŽãããŠããªããã確èªããŸãã
GET /example-resource HTTP/1.1
Host: example.com
If-None-Match: "123456789abcdef"
HTTPã¬ã¹ãã³ã¹äŸ
ETagãäžèŽããå ŽåããªãœãŒã¹ã倿ŽãããŠããªãããããµãŒããŒã¯æ¬æãéä¿¡ããããã£ãã·ã¥ããããªãœãŒã¹ãææ°ã§ããããšã瀺ããŸãã
HTTP/1.1 304 Not Modified
ETagãäžèŽããªãå ŽåããªãœãŒã¹ã倿ŽãããŠããããããµãŒããŒã¯æ°ãããªãœãŒã¹ãè¿ããææ°ã®ETagãã¬ã¹ãã³ã¹ã«å«ããŸãã
HTTP/1.1 200 OK
ETag: "987654321fedcba"
Content-Type: application/json
{
"key": "updated-value"
}
If-MatchããããŒã®äœ¿çšæé
- ãªãœãŒã¹ã®ååŸ
- ã¯ã©ã€ã¢ã³ãã¯ã
GET
ãªã¯ãšã¹ããéä¿¡ããŠãªãœãŒã¹ãååŸããŸãã - ãµãŒããŒã¯ã¬ã¹ãã³ã¹ã«ETagãå«ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ã
- æ¡ä»¶ä»ããªã¯ãšã¹ãã®éä¿¡
- ã¯ã©ã€ã¢ã³ãã¯ãåãåã£ãETagã
If-None-Match
ããããŒã«èšå®ãããµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãåãåã£ãETagã
- ãµãŒããŒã®åŠç
- ãµãŒããŒã¯ãªãœãŒã¹ã®ETagãš
If-None-Match
ã®å€ãæ¯èŒããŸãã - äžèŽããå Žå:
304 Not Modified
ããšã©ãŒãè¿ããŸãã - äžèŽããªãå Žå: ãªãœãŒã¹ãè¿ããŸãã
- ãµãŒããŒã¯ãªãœãŒã¹ã®ETagãš
If-Range
If-Range
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãæ¡ä»¶ä»ãç¯å²ãªã¯ãšã¹ããè¡ãããã«äœ¿çšãããHTTPããããŒã§ãããªãœãŒã¹ã倿ŽãããŠããªãå Žåãç¯å²ãªã¯ãšã¹ãïŒRange
ããããŒïŒã§æå®ãããç¯å²ãååŸãããªãœãŒã¹ã倿ŽãããŠããå Žåã¯ããªãœãŒã¹å
šäœãåååŸããŸãããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãããéãããETagå€ãŸãã¯æçµæŽæ°æ¥æïŒLast-Modified
ïŒãåºã«ãªãœãŒã¹ã®å€æŽæç¡ã倿ããŸãã
If-Range
ããããŒã®æ§æã以äžã«ç€ºããŸãã
If-RangeããããŒã®æ§æ
If-Range: <ETag> ãŸã㯠<æçµæŽæ°æ¥æ>
ETag
- ãªãœãŒã¹ã®ããŒãžã§ã³ãèå¥ããèå¥åïŒäŸ:
"123456789abcdef"
ïŒã
- ãªãœãŒã¹ã®ããŒãžã§ã³ãèå¥ããèå¥åïŒäŸ:
æçµæŽæ°æ¥æ
- ãªãœãŒã¹ã®æçµæŽæ°æ¥æã瀺ãå€ïŒäŸ:
Wed, 26 Jan 2025 09:00:00 GMT
ïŒã
- ãªãœãŒã¹ã®æçµæŽæ°æ¥æã瀺ãå€ïŒäŸ:
If-Range
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãIf-Range
ããããŒãçšããŠããŸããIf-Range
ããããŒã«ã¯Etag
å€ãæå®ããŠããŸãã
GET /example-resource HTTP/1.1
Host: example.com
Range: bytes=100-200
If-Range: "123456789abcdef"
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒäžã®ãªãœãŒã¹ã®ETagã"123456789abcdef"
ãšäžèŽããå Žåãç¯å²ãªã¯ãšã¹ãæåãªã®ã§ããã€ãç¯å²100-200
ãè¿ããŸãã
HTTP/1.1 206 Partial Content
Content-Range: bytes 100-200/1000
Content-Type: application/octet-stream
[ãªãœãŒã¹ã®æå®ãããç¯å²ã®ããŒã¿]
ãµãŒããŒäžã®ãªãœãŒã¹ã®ETagã"123456789abcdef"
ãšäžèŽããªãå ŽåããªãœãŒã¹ã倿ŽãããŠããããããµãŒããŒã¯ãªãœãŒã¹å
šäœãè¿ããŸãã
HTTP/1.1 200 OK
Content-Length: 1000
Content-Type: application/octet-stream
[ãªãœãŒã¹å
šäœã®ããŒã¿]
If-MatchããããŒã®äœ¿çšæé
- ãªãœãŒã¹ã®ååŸ
- ã¯ã©ã€ã¢ã³ãã¯ã
GET
ãªã¯ãšã¹ããéä¿¡ããŠãªãœãŒã¹ãååŸããŸãã - ãµãŒããŒã¯ã¬ã¹ãã³ã¹ã«
ETag
ãŸãã¯Last-Modified
ãå«ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ã
- æ¡ä»¶ä»ããªã¯ãšã¹ãã®éä¿¡
- ã¯ã©ã€ã¢ã³ãã¯
If-Range
ããããŒãšRange
ããããŒãèšå®ããŠãªã¯ãšã¹ããéä¿¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯
- ãµãŒããŒã®åŠç
- ãµãŒããŒã¯ãªãœãŒã¹ã倿ŽãããŠããªãå Žåã¯ç¯å²ãªã¯ãšã¹ããåŠçãã倿ŽãããŠããå Žåã¯ãªãœãŒã¹å šäœãè¿ããŸãã
If-Range
ããããŒã¯If-None-Match
ãIf-Modified-Since
ãšç°ãªããéšåçãªã¬ã¹ãã³ã¹ããµããŒãããã®ãç®çã§ãã
If-Unmodified-Since
If-Unmodified-Since
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãæå®ãããæ¥æä»¥éã«ãªãœãŒã¹ã倿ŽãããŠããªãå Žåã®ã¿ãªã¯ãšã¹ããå®è¡ãããããµãŒããŒã«æç€ºããHTTPããããŒã§ãããªãœãŒã¹ããã®æ¥æä»¥éã«å€æŽãããŠããå Žåã¯ããªã¯ãšã¹ããæåŠãããŸãã
If-Unmodified-Since
ããããŒã®æ§æã以äžã«ç€ºããŸãã
If-Unmodified-SinceããããŒã®æ§æ
If-Unmodified-Since: <æ¥æ>
<æ¥æ>
- ãªãœãŒã¹ã®å€æŽãå€å®ããåºæºãšãªãæ¥æïŒ
Date
ããããŒãšåã圢åŒïŒã
- ãªãœãŒã¹ã®å€æŽãå€å®ããåºæºãšãªãæ¥æïŒ
If-Unmodified-Since
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ããªãœãŒã¹ã2025幎1æ24æ¥ 12:00:00 GMT
以é倿ŽãããŠããªãå Žåã®ã¿ãªã¯ãšã¹ããåŠçããããã«æå®ããŠããŸãã
PUT /example-resource HTTP/1.1
Host: example.com
If-Unmodified-Since: Wed, 24 Jan 2025 12:00:00 GMT
Content-Type: application/json
{
"key": "new-value"
}
HTTPã¬ã¹ãã³ã¹äŸ
ãªãœãŒã¹ã倿ŽãããŠããªãå Žåã«ã¯ããªã¯ãšã¹ããæåããŸãã
HTTP/1.1 200 OK
ãªãœãŒã¹ã倿ŽãããŠããå Žåã«ã¯ããµãŒããŒã¯ãªã¯ãšã¹ããæåŠãããªãœãŒã¹ã¯å€æŽãããŸãããä»ã®ããã»ã¹ããªãœãŒã¹ã倿ŽããŠããå Žåããªã¯ãšã¹ããæåŠããããšã§æå³ããªãããŒã¿ã®äžæžããé²ããŸãã
HTTP/1.1 412 Precondition Failed
If-MatchããããŒã®äœ¿çšæé
- ãªãœãŒã¹ã®ååŸ
- ã¯ã©ã€ã¢ã³ãã¯ãªãœãŒã¹ãååŸãããã®
Last-Modified
æ¥æãä¿åããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãªãœãŒã¹ãååŸãããã®
- æ¡ä»¶ä»ããªã¯ãšã¹ãã®éä¿¡
- ã¯ã©ã€ã¢ã³ãã¯ããªãœãŒã¹ã倿ŽãããŠããªãã確èªããããã«
If-Unmodified-Since
ããããŒãéä¿¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ããªãœãŒã¹ã倿ŽãããŠããªãã確èªããããã«
- ãµãŒããŒã®åŠç
- ãµãŒããŒã¯ãªãœãŒã¹ã®æŽæ°æ¥æãš
If-Unmodified-Since
ã®å€ãæ¯èŒããŸãã - 倿ŽãããŠããªãå Žå â ãªã¯ãšã¹ããåŠçã
- 倿ŽãããŠããå Žå â
412 Precondition Failed
ãè¿ãããªã¯ãšã¹ããæåŠã
- ãµãŒããŒã¯ãªãœãŒã¹ã®æŽæ°æ¥æãš
Max-Forwards
Max-Forwards
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠããªã¯ãšã¹ããçµç±ã§ãããããã·ãã²ãŒããŠã§ã€ã®æå€§æ°ãå¶éããããã«äœ¿çšãããHTTPããããŒã§ããäž»ã«TRACEã¡ãœãããšãšãã«äœ¿çšãããç¡éã«ãŒããé²ãããã«åœ¹ç«ã¡ãŸãã
Max-Forwards
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Max-ForwardsããããŒã®æ§æ
Max-Forwards: <æ°å€>
<æ°å€>
- ãªã¯ãšã¹ããééã§ããæå€§ãããã·/ã²ãŒããŠã§ã€ã®æ°ã0ã«ãªããšãµãŒããŒããªã¯ãšã¹ããåŠçãããã以äžè»¢éãããŸããã
Max-Forwards
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒãŸã§ã®çµè·¯ããããã°ããããã«TRACE
ã¡ãœããã䜿çšããŠããããªã¯ãšã¹ãã¯æå€§5åãŸã§ãããã·ãã²ãŒããŠã§ã€ãçµç±ã§ããŸãã
TRACE / HTTP/1.1
Host: example.com
Max-Forwards: 5
Max-ForwardsããããŒã®äœ¿çšæé
- ã¯ã©ã€ã¢ã³ããMax-Forwardsãèšå®
- ã¯ã©ã€ã¢ã³ãã
Max-Forwards
ããããŒãèšå®ãããªã¯ãšã¹ããéä¿¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã
- ãããã·ãŸãã¯ã²ãŒããŠã§ã€ãå€ãæžå°ããã
- ãªã¯ãšã¹ãã転éãããã³ã«
Max-Forwards
ã®å€ã1æžãããŸãã
- ãªã¯ãšã¹ãã転éãããã³ã«
- å€ã0ã«ãªã£ãããµãŒããŒãåŠç
- 転éã忢ãããªã¯ãšã¹ããåŠçããŠã¬ã¹ãã³ã¹ãè¿ããŸãã
Max-Forward
ããããŒã¯TRACE
ãšãšãã«äœ¿çšãããããšãã»ãšãã©ã§ãäžè¬çãªGET
ãPOST
ãªã¯ãšã¹ãã«ã¯éåžžäžèŠã§ãã
Origin
Origin
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãHTTPãªã¯ãšã¹ãã®éä¿¡å
ïŒãªãªãžã³ïŒã瀺ãããããŒã§ãCORSïŒCross-Origin Resource SharingïŒã®å€å®ã«äœ¿çšãããŸããäž»ã«ãã¯ãã¹ãªãªãžã³ïŒç°ãªããã¡ã€ã³éïŒã§ã®ãªã¯ãšã¹ãã®ã»ãã¥ãªãã£å¶åŸ¡ã«é¢ãããŸãã
ãªãªãžã³ãšã¯
ãªãªãžã³ã¯ãURLå
ã®ãã¹ããŒã ïŒãããã³ã«ïŒ
+ FQDNïŒãã¹ã+ãã¡ã€ã³ïŒ
+ ããŒãçªå·
ãã®çµã¿åããã§ãïŒããŒãçªå·ã¯çç¥å¯èœïŒãäŸãã°ãã®ããŒãžããHTTPãªã¯ãšã¹ãããå Žåããªãªãžã³ã¯ãhttps://it-infomation.com
ããšãªããŸãã
Origin
ããããŒã®æ§æã以äžã«ç€ºããŸãã
OriginããããŒã®æ§æ
Origin: <ã¹ããŒã >://<ãã¹ã>[:<ããŒã>]
<ã¹ããŒã >
http
ãŸãã¯https
<ãã¹ã>
- FQDNïŒå®å šä¿®é£Ÿãã¡ã€ã³åïŒãŸãã¯IPã¢ãã¬ã¹
<ããŒã>
ïŒçç¥å¯ïŒ- æšæºããŒãïŒHTTP: 80, HTTPS: 443ïŒã¯çç¥å¯èœ
Origin
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
https://client.example.com
ã®ããŒãžãããªã¯ãšã¹ããçºçããå Žåã«ã¯ã以äžã®ããã«ãªããŸãã
GET /api/data HTTP/1.1
Host: api.example.com
Origin: https://client.example.com
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒããªã¯ãšã¹ããèš±å¯ããå Žåã«ã¯ã以äžã®ããã«ãªããŸãã以äžã®äŸã ãšãã¢ã¯ã»ã¹ãèš±å¯ãããªãªãžã³ããhttps://client.example.com
ã®ã¿ã«æå®ããŠããŸãã
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example.com
OriginããããŒã®æ³šæç¹
- ãµãŒããŒåŽã®CORSèšå®ãå¿
èŠ
Access-Control-Allow-Origin
ãé©åã«èšå®ããªããšããã©ãŠã¶ã¯ã¬ã¹ãã³ã¹ããããã¯ããã
- ç°ãªããªãªãžã³éã®ãªã¯ãšã¹ãã¯å¶éããã
https://client.example.com
ããhttps://api.example.com
ãžã®ãªã¯ãšã¹ãã¯ãCORSã®èš±å¯ããªããšå€±æããŸãã
Proxy-Authorization
Proxy-Authorization
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ãããããã·ãµãŒããŒãéããŠãªã¯ãšã¹ããéä¿¡ããéã«ããããã·ãžã®èªèšŒæ
å ±ãæäŸããããã®HTTPããããŒã§ãããããã·ãèªèšŒãèŠæ±ããå Žåãã¯ã©ã€ã¢ã³ãã¯ãã®ããããŒã䜿çšããŠãŠãŒã¶ãŒåããã¹ã¯ãŒããããŒã¯ã³ãéä¿¡ããã¢ã¯ã»ã¹ãèš±å¯ãããŸãã
ãµãŒããŒãProxy-Authenticate
ããããŒãéä¿¡ããã¯ã©ã€ã¢ã³ããProxy-Authorization
ããããŒã§èªèšŒæ
å ±ãæäŸããŸãã
Proxy-Authorization
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Proxy-AuthorizationããããŒã®æ§æ
Proxy-Authorization: <èªèšŒæ¹åŒ> <èªèšŒæ
å ±>
<èªèšŒæ¹åŒ>
- èªèšŒæ¹åŒïŒäŸ:
Basic
,Bearer
ïŒã
- èªèšŒæ¹åŒïŒäŸ:
<èªèšŒæ å ±>
- èªèšŒã¹ããŒã ã«åºã¥ãèªèšŒããŒã¿ïŒäŸ: ãšã³ã³ãŒããããæååãããŒã¯ã³ïŒ
Proxy-Authorization
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
BasicèªèšŒ
ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããBase64ã§ãšã³ã³ãŒãããŠéä¿¡ããŸãã
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
dXNlcm5hbWU6cGFzc3dvcmQ=
ã¯ãusername:password
ãBase64ã§ãšã³ã³ãŒãããæååã§ãã
BearerããŒã¯ã³èªèšŒ
ã¢ã¯ã»ã¹ããŒã¯ã³ã䜿çšããŠãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŸãïŒOAuth 2.0ãªã©ã§äœ¿çšïŒã
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
ããŒã¯ã³ïŒeyJhbGciOiJIUzI1NiIs...
ïŒã¯ãã¢ã¯ã»ã¹ããŒã¯ã³ã§ãã
Range
Range
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãHTTPãªã¯ãšã¹ãã§ãªãœãŒã¹ã®äžéšïŒç¹å®ã®ç¯å²ã®ããŒã¿ïŒãèŠæ±ããããã«äœ¿çšãããHTTPããããŒã§ããããã«ããã倧ããªãã¡ã€ã«ãåå²ããŠååŸããããããŠã³ããŒãã®åéãå¯èœã«ãªããŸãã
Range
ããããŒã®æ§æã以äžã«ç€ºããŸãã
RangeããããŒã®æ§æ
Range: <åäœ>=<éå§äœçœ®>-<çµäºäœçœ®>
<åäœ>
:bytes
ïŒãã€ãåäœïŒãäžè¬çã«äœ¿çšãããã<éå§äœçœ®>
: ååŸãããããŒã¿ã®éå§ãã€ãäœçœ®ïŒ0ããå§ãŸãïŒã<çµäºäœçœ®>
: ïŒçç¥å¯ïŒ: ååŸãããããŒã¿ã®çµäºãã€ãäœçœ®ã
Range
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãRange
ããããŒãçšããŠããªãœãŒã¹ã®äžéšïŒ100-200ãã€ãïŒãèŠæ±ããŠããŸãã
GET /example-resource HTTP/1.1
Host: example.com
Range: bytes=100-200
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãRange
ãªã¯ãšã¹ãããµããŒãããŠããããªãœãŒã¹ã®ãµã€ãºã201ãã€ã以äžã®å Žåãæå®ãããç¯å²ïŒ100-200ãã€ãïŒãè¿ããŸãã
HTTP/1.1 206 Partial Content
Content-Range: bytes 100-200/1000
Content-Length: 101
Content-Type: application/octet-stream
[100-200 ãã€ãç®ã®ããŒã¿]
ãµãŒããŒã Range
ãªã¯ãšã¹ãããµããŒãããŠããªãå ŽåããµãŒããŒãRange
ãªã¯ãšã¹ããç¡èŠããå
šããŒã¿ãéä¿¡ããŸãã
HTTP/1.1 200 OK
Content-Length: 1000
Content-Type: application/octet-stream
[ãªãœãŒã¹å
šäœã®ããŒã¿]
Referer
Referer
ããããŒïŒãªãã¡ã©ãŒïŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãçŸåšã®ãªã¯ãšã¹ããçºçããå
ã®ããŒãžïŒçŽåã«é²èЧããŠããããŒãžïŒã®URLã瀺ãHTTPããããŒã§ãããŠãŒã¶ãŒãããããŒãžã®ãªã³ã¯ãã¯ãªãã¯ããéã«ããã®ãªã³ã¯å
ã®URLããµãŒããŒã«äŒããããã«äœ¿çšãããŸãã
Referer
ããããŒã®æ§æã以äžã«ç€ºããŸãã
RefererããããŒã®æ§æ
Referer: <URL>
<URL>
- ãŠãŒã¶ãŒããªã¯ãšã¹ããçºè¡ããå ã®ããŒãžã®URLã
Referer
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ãŠãŒã¶ãŒãhttps://example.com
ã®ããŒãžã«ãããªã³ã¯ãã¯ãªãã¯ããŠhttps://destination.com/page
ã«ç§»åããå Žåã«ã¯ã以äžã®ãããªHTTPãªã¯ãšã¹ãã«ãªããŸãããã®çµæãdestination.com
ã®ãµãŒããŒã¯ããã®ãªã¯ãšã¹ãã®çºçå
ãexample.com
ã§ããããšãç¥ãããšãã§ããŸãã
GET /page HTTP/1.1
Host: destination.com
Referer: https://example.com
ãRefererãã®ç¶Žãã¯æ£ããã¯ãReferrerãã§ãããHTTP仿§ã決å®ããéã«ãRefererããšèª€èšããããã®ãŸãŸæ£åŒãªä»æ§ãšããŠå®çããŸãã
Upgrade-Insecure-Requests
Upgrade-Insecure-Requests
ããããŒã¯ãã¯ã©ã€ã¢ã³ãïŒéåžžã¯ãã©ãŠã¶ïŒãHTTPããHTTPSãžã®ã¢ããã°ã¬ãŒããåžæããããšããµãŒããŒã«éç¥ããããã®ããããŒã§ãããã®ããããŒãéä¿¡ãããå ŽåããµãŒããŒã¯å¯èœã§ããã°ãå®å
šãªHTTPSãªãœãŒã¹ãæäŸããããšãæšå¥šãããŸãã
Upgrade-Insecure-Requests
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Upgrade-Insecure-RequestsããããŒã®æ§æ
Upgrade-Insecure-Requests: 1
1
ã®å€ã¯ãHTTPSãžã®ã¢ããã°ã¬ãŒããåžæããããšããæå³ã§ãããã以å€ã®å€ã¯äœ¿çšãããŸããã
Upgrade-Insecure-Requests
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯HTTPSçã®ãªãœãŒã¹ãèŠæ±ã§ãããªãæäŸããŠã»ããããšã瀺ããŠããŸãã
GET /example-page HTTP/1.1
Host: example.com
Upgrade-Insecure-Requests: 1
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãHTTPSãªãœãŒã¹ãæäŸããããšãå¯èœãªå Žåããªãã€ã¬ã¯ããæç€ºããŸãããã®çµæãã¯ã©ã€ã¢ã³ãã¯https://example.com/example-page
ã«èªåçã«ç§»åããŸãã
HTTP/1.1 301 Moved Permanently
Location: https://example.com/example-page
ãµãŒããŒãHTTPSãæäŸããŠããªãå Žåãéåžžã®HTTPã¬ã¹ãã³ã¹ãè¿ããŸãã
HTTP/1.1 200 OK
Content-Type: text/html
TE
TE
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãã¯ã©ã€ã¢ã³ãããµãŒããŒã«å¯ŸããŠãåãå
¥ãå¯èœãªTransfer-Encodingã®åœ¢åŒïŒè»¢éãšã³ã³ãŒãã£ã³ã°ïŒããæå®ããããã®ããããŒã§ããéåžžãHTTP/1.1ã®ããã£ã³ã¯è»¢éãšã³ã³ãŒãã£ã³ã°ïŒchunkedïŒãã«é¢ãããµããŒãã瀺ãããã«äœ¿çšãããŸãããéåžžã®ãŠã§ããã©ãŠã¶ã§ã¯ã»ãšãã©å©çšãããŸããã
TE
ããããŒã®æ§æã以äžã«ç€ºããŸãã
TEããããŒã®æ§æ
TE: <ãšã³ã³ãŒãã£ã³ã°æ¹åŒ>[;q=<å質å€>], ...
<ãšã³ã³ãŒãã£ã³ã°åœ¢åŒ>
- ã¯ã©ã€ã¢ã³ããåãå
¥ãå¯èœãª Transfer-Encoding æ¹åŒïŒäŸ:
chunked
ïŒ
- ã¯ã©ã€ã¢ã³ããåãå
¥ãå¯èœãª Transfer-Encoding æ¹åŒïŒäŸ:
q=<å質å€>
ïŒä»»æïŒ:- åªå 床ã瀺ãå€ïŒ1.0ãæãé«ããããã©ã«ãã¯1.0ïŒã
TE
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãTE: chunked
ã§ã¯ã©ã€ã¢ã³ãã¯chunked
転éãšã³ã³ãŒãã£ã³ã°ãåãå
¥ãå¯èœã§ããããšããµãŒããŒã«äŒããŠããŸãã
GET /example.txt HTTP/1.1
Host: example.com
TE: chunked
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒã¯Transfer-Encoding: chunked
ãå«ãã¬ã¹ãã³ã¹ãè¿ããŸãã
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/plain
4
Test
7
Message
0
ãµãŒããŒãchunked
転éã䜿çšããªãå Žåãéåžžã®ã¬ã¹ãã³ã¹ãéä¿¡ããŸãã
HTTP/1.1 200 OK
Content-Length: 13
Content-Type: text/plain
Hello, World!
è£è¶³
TE
ããããŒã¯äž»ã«chunked
転éã®ããã«äœ¿çšããŸãã- ãã®ä»ã®ãšã³ã³ãŒãã£ã³ã°ïŒ
gzip
ãdeflate
ãªã©ïŒã¯TE
ã§ã¯ãªãAccept-Encoding
ããããŒã§æå®ããŸãã
X-Forwarded-Host
X-Forwarded-Host
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãããŒããã©ã³ãµããããã·ãµãŒããçµç±ããŠWebãµãŒãã«æ¥ç¶ããéã«ãã¯ã©ã€ã¢ã³ãã®éä¿¡å
ãã¹ãåãWebãµãŒãã«äŒããããã®HTTPããããŒã§ããéåžžããããã·ãçµç±ãããšHost
ããããŒãå€ããå¯èœæ§ããããããå
ã®ãã¹ãæ
å ±ãä¿æããããã«X-Forwarded-Host
ã䜿çšãããŸãã
X-Forwarded-Host
ããããŒã®æ§æã以äžã«ç€ºããŸãã
X-Forwarded-HostããããŒã®æ§æ
X-Forwarded-Host: <ãªãªãžãã«ã®ãã¹ãå>
<ãªãªãžãã«ã®ãã¹ãå>
- ã¯ã©ã€ã¢ã³ããæåã«ãªã¯ãšã¹ããéä¿¡ãããã¹ãã
X-Forwarded-Host
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«ã¢ã¯ã»ã¹ãããããã·proxy.example.net
ãçµç±ããå Žåã®HTTPãªã¯ãšã¹ãã¯ä»¥äžã®ããã«ãªããŸãã
GET /page HTTP/1.1
Host: proxy.example.net
X-Forwarded-Host: example.com
Host: proxy.example.net
ã¯ãããã·ã®ãã¹ãåïŒå®éã®ãªã¯ãšã¹ããéãããå
ïŒã§ããX-Forwarded-Host: example.com
ã¯ã¯ã©ã€ã¢ã³ããæ¬æ¥ã¢ã¯ã»ã¹ããããšããŠãããã¹ãåã§ãã
HTTPã¬ã¹ãã³ã¹äŸ
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 200 OK
Content-Type: text/html
X-Processed-Host: example.com
<!DOCTYPE html>
<html>
<head><title>Example Page</title></head>
<body><h1>Welcome to Example.com!</h1></body>
</html>
X-Processed-Host: example.com
ã¯WebãµãŒããŒãX-Forwarded-Host
ãèªèãããªãªãžãã«ã®ãã¹ããåŠçããããšã瀺ããŠãŸãã
X-Forwarded-For
X-Forwarded-For
ããããŒã¯ãHTTPãªã¯ãšã¹ãã«ãããŠãããŒããã©ã³ãµããããã·ãµãŒããçµç±ããŠWebãµãŒãã«æ¥ç¶ããéã«ãã¯ã©ã€ã¢ã³ãã®éä¿¡å
ã®IPã¢ãã¬ã¹ãWebãµãŒãã«äŒããããã®HTTPããããŒã§ããã¢ã¯ã»ã¹å¶åŸ¡ããã°ç®¡çã§ã¯ã©ã€ã¢ã³ãã®æ£ããIPãèšé²ããããã«äœ¿çšãããŸãã
X-Forwarded-For
ããããŒã®æ§æã以äžã«ç€ºããŸãã
X-Forwarded-ForããããŒã®æ§æ
X-Forwarded-For: <ã¯ã©ã€ã¢ã³ãIP>[, <ãããã·1IP>, <ãããã·2IP>, ...]
<ã¯ã©ã€ã¢ã³ãIP>
- æåã®IPãå ã®ã¯ã©ã€ã¢ã³ãã®IPã
<ãããã·IP>
- è€æ°ã®ãããã·ãééããå Žåãçµç±ãããããã·ã®IPãé çªã«è¿œå ãããŸãã
X-Forwarded-For
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ã(203.0.113.10
)ããããã·(192.168.1.1
)ãçµç±ããŠexample.com
ã«HTTPãªã¯ãšã¹ããéä¿¡ããå Žåã以äžã®ããã«ãªããŸãã
GET /page HTTP/1.1
Host: example.com
X-Forwarded-For: 203.0.113.10, 192.168.1.1
X-Forwarded-For: 203.0.113.10
ã¯å
ã®ã¯ã©ã€ã¢ã³ãã®IPã¢ãã¬ã¹ã§ãã
ã¯ã©ã€ã¢ã³ã(203.0.113.10
)ãã2ã€ã®ãããã·(192.168.1.1
, 10.0.0.1
)ãçµç±ããŠexample.com
ã«HTTPãªã¯ãšã¹ããéä¿¡ããå Žåã以äžã®ããã«ãªããŸãã
GET /page HTTP/1.1
Host: example.com
X-Forwarded-For: 203.0.113.10, 192.168.1.1, 10.0.0.1
HTTPã¬ã¹ãã³ã¹äŸ
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 200 OK
Content-Type: text/html
X-Client-IP: 203.0.113.10
<!DOCTYPE html>
<html>
<head><title>Client IP</title></head>
<body><h1>Your IP: 203.0.113.10</h1></body>
</html>
X-Client-IP: 203.0.113.10
ã¯ãµãŒããŒãX-Forwarded-For
ããã¯ã©ã€ã¢ã³ãã®å
IPãèªèããŠã¬ã¹ãã³ã¹ã«å«ããŠããŸãã
Response HeaderïŒã¬ã¹ãã³ã¹ããããŒïŒã®äžèЧ
HTTPããã㌠| 説æ |
Access-Control-Allow-Origin | CORSã«ãããŠãä»ã®ãªãªãžã³ããã®ãªã¯ãšã¹ããèš±å¯ããããã㌠|
Access-Control-Allow-Credentials | CORSã«ãããŠãèªèšŒæ å ±ïŒã¯ãããŒçïŒã®éä¿¡ãå¶åŸ¡ããããã㌠|
Access-Control-Allow-Methods | CORSã«ãããŠããµãŒããŒãèš±å¯ããHTTPã¡ãœãããæå®ããããã㌠|
Access-Control-Allow-Headers | CORSã«ãããŠããµãŒããŒãèš±å¯ããã«ã¹ã¿ã ããããŒãæå®ããããã㌠|
Access-Control-Max-Age | CORSã®ããªãã©ã€ããªã¯ãšã¹ãã®çµæããã£ãã·ã¥ã§ããæéãæå®ããããã㌠|
Access-Control-Expose-Headers | CORSã«ãããŠããã©ãŠã¶ãã¢ã¯ã»ã¹å¯èœãªè¿œå ã®ã¬ã¹ãã³ã¹ããããŒãæå®ããããã㌠|
Accept-Ranges | ãµãŒããŒãRangeãªã¯ãšã¹ãïŒéšåååŸãªã¯ãšã¹ãïŒã«å¯Ÿå¿ããŠããããéç¥ããããã㌠|
Age | ãã£ãã·ã¥ãµãŒããŒãã³ã³ãã³ãããã£ãã·ã¥ããŠããã®çµéæéã瀺ãããã㌠|
ETag | ãªãœãŒã¹ã®èå¥çšã®äžæãªèå¥åã瀺ãããã㌠|
Location | ãªãã€ã¬ã¯ãæã®é·ç§»å URLãæå®ããããã㌠|
Proxy-Authenticate | ãããã·ãã¯ã©ã€ã¢ã³ãã«èªèšŒæ å ±ã®å ¥åãèŠæ±ããéã«äœ¿çšããããã㌠|
Retry-After | ãµãŒããŒãäžæçã«åŠçã§ããªãå Žåã®åè©Šè¡æšå¥šæéãéç¥ããããã㌠|
Referrer-Policy | ãã©ãŠã¶ãRefererããããŒããªã¯ãšã¹ãã«å«ããéã®æ å ±éãå¶åŸ¡ããããã㌠|
Server | ãµãŒããŒãœãããŠã§ã¢ã®æ å ±ïŒåç§°ãããŒãžã§ã³ïŒã瀺ãããã㌠|
Set-Cookie | ãµãŒããŒãã¯ã©ã€ã¢ã³ãã«Cookieãèšå®ããéã«äœ¿çšããããã㌠|
Access-Control-Allow-Origin
Access-Control-Allow-Origin
ããããŒã¯ãCORSïŒCross-Origin Resource SharingïŒã«ãããŠãä»ã®ãªãªãžã³ïŒç°ãªããã¡ã€ã³ïŒããã®ãªã¯ãšã¹ããèš±å¯ããããã®HTTPã¬ã¹ãã³ã¹ããããŒã§ãã
Access-Control-Allow-Origin
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Access-Control-Allow-OriginããããŒã®æ§æ
Access-Control-Allow-Origin: <ãªãªãžã³, *, ãŸãã¯null>
ãªãªãžã³
- æå®ãããªãªãžã³ã®ã¿ãªã¯ãšã¹ããèš±å¯ãã
*
- å šãŠã®ãªãªãžã³ããã®ãªã¯ãšã¹ããèš±å¯ïŒãã ããèªèšŒæ å ±ã䌎ããªã¯ãšã¹ãã«ã¯äœ¿çšäžå¯ïŒ
null
file://
ãdata://
ãªã©ã®ãµã³ãããã¯ã¹åãããææžã«å¯ŸããŠããªã¯ãšã¹ããèš±å¯ããã
Access-Control-Allow-Origin
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ã(https://client.example.com
)ããhttps://api.example.com
ã«GET
ãªã¯ãšã¹ããéä¿¡ããå ŽåãHTTPãªã¯ãšã¹ãã¯ä»¥äžã®ããã«ãªããŸãã
GET /data HTTP/1.1
Host: api.example.com
Origin: https://client.example.com
Origin: https://client.example.com
ã¯ã¯ã©ã€ã¢ã³ãã®ãªãªãžã³ïŒãªã¯ãšã¹ãã®çºä¿¡å
ïŒã§ãã
HTTPã¬ã¹ãã³ã¹äŸ
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example.com
Content-Type: application/json
{"message": "CORS request successful"}
Access-Control-Allow-Origin: https://client.example.com
ã¯https://client.example.com
ããã®ãªã¯ãšã¹ãã®ã¿èš±å¯ããŠããŸãã
ãã¹ãŠã®ãªãªãžã³ããã®ãªã¯ãšã¹ããèš±å¯ããå ŽåãHTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json
{"message": "CORS request from any origin is allowed"}
Access-Control-Allow-Credentials
Access-Control-Allow-Credentials
ããããŒã¯ãCORSïŒCross-Origin Resource SharingïŒã«ãããŠãã¯ã©ã€ã¢ã³ããèªèšŒæ
å ±ïŒã¯ãããŒãHTTPèªèšŒããããŒïŒãå«ãããªã¯ãšã¹ããéä¿¡ã§ããããå¶åŸ¡ããããã®HTTPã¬ã¹ãã³ã¹ããããŒã§ãã
Access-Control-Allow-Credentials
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Access-Control-Allow-CredentialsããããŒã®æ§æ
Access-Control-Allow-Credentials: true
true
ã®ã¿ãæå¹ãªå€ã§ãïŒfalse
ãä»ã®å€ã¯ç¡å¹ïŒãtrue
ãèšå®ãããšããã©ãŠã¶ãã¯ãããŒãèªèšŒæ
å ±ãå«ãããªã¯ãšã¹ããéä¿¡å¯èœã«ãªããŸãã
Access-Control-Allow-Credentials
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ã(https://client.example.com
)ããhttps://api.example.com
ã«ãã¯ãããŒãå«ãããªã¯ãšã¹ããéä¿¡ããå ŽåãHTTPãªã¯ãšã¹ãã¯ä»¥äžã®ããã«ãªããŸãã
GET /user-info HTTP/1.1
Host: api.example.com
Origin: https://client.example.com
Cookie: sessionId=abc123
Origin: https://client.example.com
ã¯ã¯ã©ã€ã¢ã³ãã®ãªãªãžã³ïŒCORSãªã¯ãšã¹ãïŒã瀺ããŠãããCookie: sessionId=abc123
ã¯èªèšŒæ
å ±ïŒã»ãã·ã§ã³IDïŒãå«ãããªã¯ãšã¹ãã§ãã
HTTPã¬ã¹ãã³ã¹äŸ
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example.com
Access-Control-Allow-Credentials: true
Content-Type: application/json
{"user": "JohnDoe"}
Access-Control-Allow-Origin: https://client.example.com
ã¯ç¹å®ã®ãªãªãžã³ã®ã¿èš±å¯ããŠããŸãïŒ*
ã¯äœ¿çšã§ããŸããïŒãAccess-Control-Allow-Credentials: true
ã«ãããã¯ã©ã€ã¢ã³ããã¯ãããŒãèªèšŒæ
å ±ãéä¿¡ã§ããããã«ããŠããŸãã
è£è¶³
Access-Control-Allow-Credentials: true
ã䜿çšããå ŽåãAccess-Control-Allow-Origin
ã«ã¯ã€ã«ãã«ãŒãïŒ*
ïŒã¯èšå®ã§ããŸãããå¿ ãç¹å®ã®ãªãªãžã³ãæå®ããå¿ èŠããããŸãïŒäŸ:Access-Control-Allow-Origin: https://client.example.com
ïŒã
Access-Control-Allow-Methods
Access-Control-Allow-Methods
ããããŒã¯ãCORSïŒCross-Origin Resource SharingïŒã«ãããŠããµãŒããŒãèš±å¯ããHTTPã¡ãœããïŒGET, POST, DELETE ãªã©ïŒãæå®ããHTTPã¬ã¹ãã³ã¹ããããŒã§ãããã®ããããŒã¯ãããªãã©ã€ããªã¯ãšã¹ãïŒOPTIONSïŒã«å¯Ÿããã¬ã¹ãã³ã¹ãšããŠéä¿¡ãããŸãã
Access-Control-Allow-Methods
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Access-Control-Allow-MethodsããããŒã®æ§æ
Access-Control-Allow-Methods: <method1>, <method2>, ...
<method1>, <method2>
- èš±å¯ããHTTPã¡ãœãããã«ã³ãåºåãã§æå®ã
Access-Control-Allow-Methods
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããDELETE
ã¡ãœããã䜿çšã§ããã確èªããããã«ãOPTIONS
ãªã¯ãšã¹ããéä¿¡ããå ŽåãHTTPãªã¯ãšã¹ãã¯ä»¥äžã®ããã«ãªããŸãã
OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Method: DELETE
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãGET, POST, DELETE
ãèš±å¯ããŠããå Žåã®HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 204 No Content
Access-Control-Allow-Methods: GET, POST, DELETE
Access-Control-Allow-Origin: https://client.example
Access-Control-Allow-Headers
Access-Control-Allow-Headers
ããããŒã¯ãCORSïŒCross-Origin Resource SharingïŒã«ãããŠããµãŒããŒãèš±å¯ããã«ã¹ã¿ã ããããŒïŒäŸ: Content-Type
, Authorization
ãªã©ïŒãæå®ããHTTPã¬ã¹ãã³ã¹ããããŒã§ãããã®ããããŒã¯ãããªãã©ã€ããªã¯ãšã¹ãïŒOPTIONSïŒã«å¯Ÿããã¬ã¹ãã³ã¹ãšããŠéä¿¡ãããŸãã
Access-Control-Allow-Headers
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Access-Control-Allow-HeadersããããŒã®æ§æ
Access-Control-Allow-Headers: <header1>, <header2>, ...
<header1>, <header2>
- èš±å¯ããã«ã¹ã¿ã ããããŒãã«ã³ãåºåãã§æå®ããŸãã
Access-Control-Allow-Headers
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããContent-Type
ãšAuthorization
ã䜿çšã§ããã確èªããããã«ãOPTIONS
ãªã¯ãšã¹ããéä¿¡ããå ŽåãHTTPãªã¯ãšã¹ãã¯ä»¥äžã®ããã«ãªããŸãã
OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Headers: Content-Type, Authorization
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãContent-Type
ãšAuthorization
ã®äœ¿çšãèš±å¯ããŠããå Žåã®HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 204 No Content
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Origin: https://client.example
Access-Control-Max-Age
Access-Control-Max-Age
ããããŒã¯CORSïŒCross-Origin Resource SharingïŒã«ãããŠãããªãã©ã€ããªã¯ãšã¹ãïŒOPTIONS
ïŒã®çµæããã£ãã·ã¥ã§ããæéïŒç§ïŒãæå®ããHTTPã¬ã¹ãã³ã¹ããããŒã§ãããã®ããããŒãèšå®ãããšãäžå®æéã®éãã¯ã©ã€ã¢ã³ãã¯åãããªãã©ã€ããªã¯ãšã¹ããåéããªããŠæžã¿ãŸããçµæãšããŠããµãŒããŒã®è² è·è»œæžãã¬ã¹ãã³ã¹é床ã®åäžã«åœ¹ç«ã¡ãŸãã
Access-Control-Max-Age
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Access-Control-Max-AgeããããŒã®æ§æ
Access-Control-Max-Age: <seconds>
<seconds>
- ããªãã©ã€ããªã¯ãšã¹ãã®ãã£ãã·ã¥æå¹æéïŒç§åäœïŒãæå®ããŸãã
- äŸãã°ã
3600
ïŒ1æéïŒãæå®ãããšã1æéã®éãåãããªãã©ã€ããªã¯ãšã¹ããåéããªããŠããããªããŸãã
Access-Control-Max-Age
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããPOST
ã¡ãœããã䜿ãããå Žåã«ãããŠãäºåã«ãµãŒããŒã«èš±å¯ãæ±ããHTTPãªã¯ãšã¹ãã¯ä»¥äžã®ããã«ãªããŸãã
OPTIONS /api/resource HTTP/1.1
Host: example.com
Origin: https://client.example
Access-Control-Request-Method: POST
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãPOST
ãèš±å¯ããããªãã©ã€ããªã¯ãšã¹ãã®çµæã3600ç§ïŒ1æéïŒãã£ãã·ã¥ããå Žåã®HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://client.example
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 3600
Access-Control-Expose-Headers
Access-Control-Expose-Headers
ããããŒã¯CORSïŒCross-Origin Resource SharingïŒã«ãããŠããã©ãŠã¶ãã¢ã¯ã»ã¹å¯èœãªã¬ã¹ãã³ã¹ããããŒãæå®ããHTTPã¬ã¹ãã³ã¹ããããŒã§ãã
éåžžãCORSç°å¢ã§ã¯ããã©ãŠã¶ãã¢ã¯ã»ã¹ã§ããã¬ã¹ãã³ã¹ããããŒã¯ããã©ã«ãã§å¶éãããŠãããContent-Type
ãCache-Control
ãªã©äžéšã®ããããŒããã¢ã¯ã»ã¹ã§ããŸããããããããã®ããããŒã䜿çšãããšããµãŒããŒã¯è¿œå ã®ããããŒãã¯ã©ã€ã¢ã³ãã«å
¬éã§ãããã©ãŠã¶ã¯X-Custom-Header
ã®ãããªã«ã¹ã¿ã ããããŒãã¢ã¯ã»ã¹å¯èœã«ãªããŸãã
Access-Control-Expose-Headers
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Access-Control-Expose-HeadersããããŒã®æ§æ
Access-Control-Expose-Headers: <header1>, <header2>, ...
<header1>, <header2>
- ã¯ã©ã€ã¢ã³ãã«å ¬éãããã¬ã¹ãã³ã¹ããã㌠ãã«ã³ãåºåãã§æå®ããŸãã
Access-Control-Expose-Headers
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ããéä¿¡ãããšããŸãã
GET /api/data HTTP/1.1
Host: example.com
Origin: https://client.example
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãX-Custom-Header
ãHTTPã¬ã¹ãã³ã¹ããããŒãšããŠè¿ããAccess-Control-Expose-Headers: X-Custom-Header
ã§ãã©ãŠã¶ããã®å€ã«ã¢ã¯ã»ã¹ã§ããããã«ããŠããŸãã
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://client.example
Access-Control-Expose-Headers: X-Custom-Header
X-Custom-Header: 12345
Accept-Ranges
Accept-Ranges
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããµãŒããŒãRange
ãªã¯ãšã¹ãïŒéšåååŸãªã¯ãšã¹ãïŒã«å¯Ÿå¿ããŠãããã©ãããéç¥ããHTTPããããŒã§ãã
Accept-Ranges
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Accept-RangesããããŒã®æ§æ
Accept-Ranges: bytes or none
byte
- ãµãŒããŒã
Range
ãªã¯ãšã¹ãããµããŒãããŠããŸãã
- ãµãŒããŒã
none
- ãµãŒããŒã
Range
ãªã¯ãšã¹ãããµããŒãããŠããŸããã
- ãµãŒããŒã
Accept-Ranges
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯ãRange
ããããŒãçšããŠããªãœãŒã¹ã®äžéšïŒ100-200ãã€ãïŒãèŠæ±ããŠããŸãã
GET /example-resource HTTP/1.1
Host: example.com
Range: bytes=100-200
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãRange
ãªã¯ãšã¹ãïŒéšåååŸãªã¯ãšã¹ãïŒããµããŒãããŠããå Žåã®HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Range: bytes 100-200/1000
Content-Length: 101
Content-Type: application/octet-stream
[100-200 ãã€ãç®ã®ããŒã¿]
è£è¶³
Accept-Ranges
ã¯ããµãŒããŒãRange
ãªã¯ãšã¹ãïŒéšåååŸãªã¯ãšã¹ãïŒããµããŒãããŠãããã©ãããã¯ã©ã€ã¢ã³ãã«éç¥ããããã®ã¬ã¹ãã³ã¹ããããŒã§ãããã ããAccept-Ranges
ãéããªããŠãããµãŒããŒã206 Partial Content
ãè¿ãã°ãã¯ã©ã€ã¢ã³ãã¯Range
ãªã¯ãšã¹ããæ©èœããããšãçè§£ã§ããŸãã仿§äžã¯å¿
é ã§ã¯ãªãã§ããããµãŒããŒãRange
ãªã¯ãšã¹ãã«å¯Ÿå¿ããŠããããšãæç€ºããããã«ãAccept-Ranges: bytes
ãéãã®ãäžè¬çã§ãã
Age
Age
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããããã·ãµãŒããŒãCDNãªã©ã®ãã£ãã·ã¥ãµãŒããŒããã³ã³ãã³ãããã£ãã·ã¥ããŠããã©ããããã®æéãçµéããããã¯ã©ã€ã¢ã³ãã«éç¥ããããã«äœ¿çšãããHTTPããããŒã§ãããã®æ
å ±ãåºã«ãã¯ã©ã€ã¢ã³ãã¯ãã£ãã·ã¥ãå€ããªã£ãŠããªããã倿ã§ããŸãã
Age
ããããŒã®æ§æã以äžã«ç€ºããŸãã
AgeããããŒã®æ§æ
Age: <seconds>
<seconds>
- ãã£ãã·ã¥ãããŠããã®çµéæéïŒç§åäœïŒ
Age
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãããµãŒããŒããindex.htmlãååŸããŠããŸãã
GET /index.html HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸããAge: 120
ã§ãã£ãã·ã¥ãããŠãã120ç§ïŒ2åïŒçµéããŠããããšãåãããŸãã
HTTP/1.1 200 OK
Cache-Control: max-age=3600
Age: 120
Content-Type: text/html
ETag
ETagïŒãšã³ãã£ãã£ã¿ã°ïŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããªãœãŒã¹ãèå¥ããããã®äžæãªèå¥åã§ããHTTPã¬ã¹ãã³ã¹ã«ETag
ããããŒãå«ããããšã§ãã¯ã©ã€ã¢ã³ãã«Etagãæž¡ããŸããäž»ã«ãã£ãã·ã¥ã®ç®¡çãæ¡ä»¶ä»ããªã¯ãšã¹ãã«äœ¿çšããããªãœãŒã¹ã®å€æŽãå¹ççã«æ€åºã§ããŸãã
ETagã®åœ¹å²ã以äžã«ç€ºããŸãã
- ãã£ãã·ã¥ã®æé©å
- ã¯ã©ã€ã¢ã³ãã¯ããµãŒããŒããååŸãããªãœãŒã¹ã®
ETag
ãä¿åããåååŸæã«If-None-Match
ãéä¿¡ããããšã§ããªãœãŒã¹ã倿ŽãããŠããªãå Žåã¯åããŠã³ããŒããåé¿ã§ããã
- ã¯ã©ã€ã¢ã³ãã¯ããµãŒããŒããååŸãããªãœãŒã¹ã®
- ãªãœãŒã¹ã®æŽåæ§ãã§ãã¯
If-Match
ãIf-Range
ã䜿çšããŠãããŒã¿ã®å€æŽããªãããšã確èªããªãããªã¯ãšã¹ããè¡ãã
- ã³ã³ãã³ãã®ããŒãžã§ã³ç®¡ç
ETag
ã®å€ã¯ãã³ã³ãã³ãã®ããã·ã¥å€ãããŒãžã§ã³çªå·ãªã©ã䜿ããããªãœãŒã¹ã®å€æŽãç¹å®ã§ããã
ETag
ããããŒã®æ§æã以äžã«ç€ºããŸãã
ETagããããŒã®æ§æ
ETag: "å€"
"å€"
- ãµãŒããŒãçæããäžæãªèå¥åïŒäŸ: ããã·ã¥å€ãããŒãžã§ã³æ å ±ïŒã
ETag
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
1. æåã®HTTPãªã¯ãšã¹ã
以äžã®HTTPãªã¯ãšã¹ããéä¿¡ãããšããŸãã
GET /index.html HTTP/1.1
Host: example.com
2. HTTPã¬ã¹ãã³ã¹
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸããETag: "abc123"
ã§ã¯ã©ã€ã¢ã³ãã«Etagãæž¡ããŠããŸãã
HTTP/1.1 200 OK
ETag: "abc123"
Cache-Control: max-age=3600
Content-Type: text/html
<!DOCTYPE html>
<html>
<head><title>Test Page</title></head>
<body><h1>Hello, World!</h1></body>
</html>
3. 次åã®HTTPãªã¯ãšã¹ã
If-None-Match
ã«ETag
ãæå®ãããµãŒããŒã«ããã®ãªãœãŒã¹ã¯å€ãã£ããïŒããšç¢ºèªããŠããŸãã
GET /index.html HTTP/1.1
Host: example.com
If-None-Match: "abc123"
Location
Location
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããªãã€ã¬ã¯ãå
ã®URLãæå®ããããã«äœ¿çšããHTTPããããŒã§ããã¯ã©ã€ã¢ã³ãã¯ãã®URLãžèªåçã«ãªã¯ãšã¹ããéä¿¡ãããŠãŒã¶ãŒãé©åãªããŒãžãžé·ç§»ãããŸãã
Location
ããããŒã®æ§æã以äžã«ç€ºããŸãã
LocationããããŒã®æ§æ
Location: <URL>
<URL>
- ã¯ã©ã€ã¢ã³ãããªãã€ã¬ã¯ããã¹ãURL
- éåžžã¯çµ¶å¯ŸURLãæå®ïŒäŸ:
https://example.com/new-page
ïŒ - çžå¯ŸURLã䜿çšå¯èœã ããæšå¥šãããªã
Location
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ããéä¿¡ãããšããŸãã以äžã®äŸã§ã¯ãã¯ã©ã€ã¢ã³ããold-page
ã«ã¢ã¯ã»ã¹ããŠããŸãã
GET /old-page HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
HTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã以äžã®äŸã§ã¯ããµãŒããŒãnew-page
ãžãªãã€ã¬ã¯ãããŠããŸãã
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-page
Content-Length: 0
ã¯ã©ã€ã¢ã³ãã¯https://example.com/new-page
ãžãªã¯ãšã¹ããéãçŽããŠããŸãã301 Moved Permanently
ãæå®ãããšããã©ãŠã¶ã¯ãã£ãã·ã¥ããæ¬¡åããnew-page
ã«çŽæ¥ã¢ã¯ã»ã¹ããããã«ãªããŸãã
302 Found
ãæå®ããå Žåãäžæçãªãªãã€ã¬ã¯ããšãªããæ¬¡å以éãold-page
ã«ã¢ã¯ã»ã¹å¯èœã«ãªããŸãã
HTTP/1.1 302 Found
Location: https://example.com/new-page
Content-Length: 0
Proxy-Authenticate
Proxy-Authenticate
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããããã·ãµãŒããŒãã¯ã©ã€ã¢ã³ãã«èªèšŒæ
å ±ã®å
¥åãèŠæ±ããããã®HTTPããããŒã§ããããã¯WWW-Authenticate
ããããŒã®ãããã·çã§ããããããã·ãµãŒããŒãèªèšŒãèŠæ±ããéã«äœ¿çšããŸãã
Proxy-Authenticate
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Proxy-AuthenticateããããŒã®æ§æ
Proxy-Authenticate: <èªèšŒæ¹åŒ> realm="<èªèšŒé å>"
<èªèšŒæ¹åŒ>
Basic
,Digest
,Bearer
ãªã©ã®èªèšŒæ¹åŒãæå®ããŸãã
realm="<èªèšŒé å>"
- èªèšŒãå¿
èŠãªç¯å²ã瀺ãïŒäŸ:
"Secure Proxy"
ïŒ
- èªèšŒãå¿
èŠãªç¯å²ã瀺ãïŒäŸ:
Proxy-Authenticate
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ããéä¿¡ãããšããŸãã
GET /resource HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
èªèšŒãå¿ èŠãªå ŽåãHTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Secure Proxy"
Content-Length: 0
407 Proxy Authentication Required
ã¯ã¯ã©ã€ã¢ã³ãã¯èªèšŒæ
å ±ãéãå¿
èŠãããããšã瀺ããŠããŸããProxy-Authenticate: Basic realm="Secure Proxy"
ã¯èªèšŒæ¹åŒã¯Basic
ããããã·ã®èªèšŒé åã¯"Secure Proxy"
ã§ããããšã瀺ããŠããŸãã
ãã®åŸãã¯ã©ã€ã¢ã³ãã¯ä»¥äžã®ãããªProxy-Authorization
ããããŒãå«ãHTTPãªã¯ãšã¹ããéãããšã§ããããã·ãžã®èªèšŒæ
å ±ãæäŸããå¿
èŠããããŸãã
GET http://example.com/ HTTP/1.1
Host: example.com
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Retry-After
Retry-After
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããµãŒããŒãäžæçã«ãªã¯ãšã¹ããåŠçã§ããªãå Žåã«ãã¯ã©ã€ã¢ã³ããå詊è¡ããã¹ãã¿ã€ãã³ã°ãéç¥ããHTTPããããŒã§ããäž»ã«503 Service Unavailable
ã429 Too Many Requests
ã®ã¬ã¹ãã³ã¹ãšäžç·ã«éä¿¡ãããŸãã
Retry-After
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Retry-AfterããããŒã®æ§æ
Retry-After: <ç§æ°>
ãŸãã¯
Retry-After: <æ¥æïŒHTTPæ¥ä»ãã©ãŒãããïŒ>
<ç§æ°>
- å詊è¡ãŸã§ã®ç§æ°ïŒäŸ:
Retry-After: 120
â 120ç§åŸã«å詊è¡ïŒ
- å詊è¡ãŸã§ã®ç§æ°ïŒäŸ:
<æ¥æ>
- å
·äœçãªæå»ïŒRFC 7231 ãã©ãŒãããïŒïŒäŸ:
Retry-After: Wed, 21 Oct 2025 07:28:00 GMT
ïŒ
- å
·äœçãªæå»ïŒRFC 7231 ãã©ãŒãããïŒïŒäŸ:
Retry-After
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ããéä¿¡ãããšããŸãã
GET /api HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãäžæçã«è² è·ãé«ãããã120ç§åŸã«å詊è¡ããããã«éç¥ããå ŽåãHTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 503 Service Unavailable
Retry-After: 120
Content-Type: text/plain
Service is temporarily unavailable. Please retry after 120 seconds.
ã¡ã³ããã³ã¹ãçµããæéãå ·äœçãªæ¥æïŒGMTïŒã§éç¥ããå ŽåãHTTPã¬ã¹ãã³ã¹ã¯ä»¥äžã®ããã«ãªããŸãã
HTTP/1.1 503 Service Unavailable
Retry-After: Wed, 21 Oct 2025 07:28:00 GMT
Content-Type: text/plain
The service is down for maintenance. Please retry after the specified time.
Referrer-Policy
Referrer-Policy
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããã©ãŠã¶ãReferer
ããããŒããªã¯ãšã¹ãã«å«ããéã®æ
å ±éãå¶åŸ¡ããããã®HTTPããããŒã§ãããã©ã€ãã·ãŒä¿è·ãã»ãã¥ãªãã£åŒ·åã®ããã«äœ¿çšãããŸãã
Referrer-Policy
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Referrer-PolicyããããŒã®æ§æ
Referrer-Policy: <ããªã·ãŒ>
<ããªã·ãŒ>
- ãªãã¡ã©ãŒæ å ±ã®éä¿¡ã«ãŒã«ãæå®ããŸãã以äžã«äžäŸã瀺ããŸãã
no-referrer
Referer
ãäžåéä¿¡ããªã
strict-origin-when-cross-origin
- åäžãªãªãžã³ãªããã«URLãç°ãªããªãªãžã³ãªããã¡ã€ã³ã®ã¿ãHTTPSâHTTPã®ããŠã³ã°ã¬ãŒãæã¯
Referer
ãéä¿¡ããªãã
- åäžãªãªãžã³ãªããã«URLãç°ãªããªãªãžã³ãªããã¡ã€ã³ã®ã¿ãHTTPSâHTTPã®ããŠã³ã°ã¬ãŒãæã¯
<æ¥æ>
- å
·äœçãªæå»ïŒRFC 7231 ãã©ãŒãããïŒïŒäŸ:
Retry-After: Wed, 21 Oct 2025 07:28:00 GMT
ïŒ
- å
·äœçãªæå»ïŒRFC 7231 ãã©ãŒãããïŒïŒäŸ:
Referrer-Policy
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ãŠãŒã¶ãŒãhttps://example.com
ã®ããŒãžã«ãããªã³ã¯ãã¯ãªãã¯ããŠhttps://destination.com/page
ã«ç§»åããå Žåã«ã¯ã以äžã®ãããªHTTPãªã¯ãšã¹ãã«ãªããŸãã
GET /page HTTP/1.1
Host: destination.com
Referer: https://example.com
Referer
ããããŒãéä¿¡ãããŠããŸããããã®éä¿¡å
容ã¯Referrer-Policy
ããããŒã«ãã£ãŠå€æŽãããŸããäŸãã°ããµãŒããŒã以äžã®ãããªHTTPã¬ã¹ãã³ã¹ãéä¿¡ããŠããå Žåã«ã¯ãReferer
ããããŒã¯éä¿¡ãããªããªããŸãã
HTTP/1.1 200 OK
Referrer-Policy: no-referrer
Content-Type: text/html
Server
Server
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããµãŒããŒãœãããŠã§ã¢ã®æ
å ±ïŒåç§°ãããŒãžã§ã³ïŒã瀺ãããã®HTTPããããŒã§ããäž»ã«ãµãŒããŒã®çš®é¡ïŒApache, Nginx, IIS ãªã©ïŒãããŒãžã§ã³æ
å ±ãæäŸããŸãã
Server
ããããŒã®æ§æã以äžã«ç€ºããŸãã
ServerããããŒã®æ§æ
Server: <ãµãŒããŒãœãããŠã§ã¢æ
å ±>
<ãµãŒããŒãœãããŠã§ã¢æ å ±>
- ãµãŒããŒã®åç§°ãããŒãžã§ã³ãèšè¿°ããŸãã
- äŸ
Server: Apache/2.4.41 (Ubuntu)
Server: nginx/1.18.0
Server
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«ã¢ã¯ã»ã¹ãããšããŸãã
GET / HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãServer
ããããŒãå«ãã¬ã¹ãã³ã¹ãè¿ããŸãããµãŒããŒãApache/2.4.41 (Ubuntu)
ã§åäœããŠããããšãåãããŸãã
HTTP/1.1 200 OK
Server: Apache/2.4.41 (Ubuntu)
Content-Type: text/html
<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Hello, World!</h1></body>
</html>
è£è¶³
Server
ããããŒãæå¹ã ãšãæ»æè
ã«ãµãŒããŒæ
å ±ãç¥ãããå¯èœæ§ããããŸããå€ãããŒãžã§ã³ã®ãµãŒããŒã䜿ã£ãŠãããšãæ¢ç¥ã®è匱æ§ãçããããªã¹ã¯ããããŸãããã®ãããäžèŠãªãåé€ãŸãã¯ç°¡ç¥åïŒäŸ: Server: Apache
ã®ã¿ïŒããã®ãæšå¥šãããŠããŸãã
Set-Cookie
Set-Cookie
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããŠã§ããµãŒããŒãã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ïŒã«å¯ŸããŠCookieãèšå®ããããã®HTTPããããŒã§ããã¯ãããŒã䜿çšããããšã§ããŠãŒã¶ãŒã®ã»ãã·ã§ã³æ
å ±ãèšå®ãä¿åãããŠã§ããµã€ããå©çšè
ã®ç¶æ
ã远跡ã»ç®¡çã§ããŸãã
Set-Cookie
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Set-CookieããããŒã®æ§æ
Set-Cookie: <ã¯ãããŒå>=<å€>; <ãªãã·ã§ã³>
<ã¯ãããŒå>=<å€>
- ã¯ãããŒã®ããŒãšå€
<ãªãã·ã§ã³>
ïŒä»»æïŒ- ã¯ãããŒã®åäœãå¶åŸ¡ãã屿§
Set-Cookie
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«ã¢ã¯ã»ã¹ãããšããŸãã
GET / HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãã¯ãããŒãèšå®ããŠããŸãã
HTTP/1.1 200 OK
Set-Cookie: sessionId=abc123; Path=/
Content-Type: text/html
<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>
次åã®HTTPãªã¯ãšã¹ãã§ã¯ã¯ã©ã€ã¢ã³ãã¯ä¿åããã¯ãããŒãéä¿¡ããŸãããã®çµæããµãŒããŒã¯ã¯ãããŒæ å ±ãåãåããã»ãã·ã§ã³ãèªèã§ããŸãã
GET / HTTP/1.1
Host: example.com
Cookie: sessionId=abc123
Strict-Transport-Security(HSTS)
Strict-Transport-Security
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠãWebãµã€ããžã®æ¥ç¶ã匷å¶çã«HTTPSãžãªãã€ã¬ã¯ããã以éã®ãã®ãã¡ã€ã³ãžã®ã¢ã¯ã»ã¹ãHTTPSã®ã¿ã«å¶éããHTTPããããŒã§ãã仿§ã¯RFC 6797ã§èŠå®ãããŠãããäžéè
æ»æïŒMITMæ»æïŒãé²ãç®çã§äœ¿çšãããŸãã
Strict-Transport-Security
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Strict-Transport-SecurityããããŒã®æ§æ
Strict-Transport-Security: max-age=<ç§æ°>
Strict-Transport-Security: max-age=<ç§æ°>; includeSubDomains
Strict-Transport-Security: max-age=<ç§æ°>; includeSubDomains; preload
max-age=<ç§æ°>
- HTTPSæ¥ç¶ã匷èŠããæéïŒç§ïŒïŒå¿ é ïŒ
includeSubDomains
- ãµããã¡ã€ã³ã«ãé©çšããïŒä»»æïŒ
preload
- HSTS Preloadãªã¹ãã«ç»é²ããããã«å¿ èŠïŒä»»æïŒ
Strict-Transport-Security
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«ã¢ã¯ã»ã¹ãããšããŸãã
GET / HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãHSTSãæå¹åãã以éHTTPSã®ã¿ã匷å¶ããŠããŸãã
HTTP/1.1 301 Moved Permanently
Location: https://example.com/
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary
Vary
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããã£ãã·ã¥ã®ããªãšãŒã·ã§ã³ãæå®ãããµãŒããŒãç°ãªããªã¯ãšã¹ãããããŒã®å€ã«å¿ããŠç°ãªãã¬ã¹ãã³ã¹ãè¿ãå Žåã«äœ¿çšãããHTTPããããŒã§ãã
Vary
ããããŒã®æ§æã以äžã«ç€ºããŸãã
VaryããããŒã®æ§æ
Vary: *
Vary: <ãããå>, <ãããå>, âŠ
Vary: *
- ãã¹ãŠã®ããããŒã«å¿ããŠã¬ã¹ãã³ã¹ãå€ããïŒãã£ãã·ã¥äžå¯ïŒ
Vary: Accept-Language
- èšèªèšå®ã«ãã£ãŠã¬ã¹ãã³ã¹ãåãã
Vary: User-Agent, Accept-Encoding
- è€æ°ã®ããããŒã«å¿ããŠãã£ãã·ã¥ãåãã
Vary
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«ã¢ã¯ã»ã¹ããæ¥æ¬èª(ja
)ã®ã³ã³ãã³ããèŠæ±ãããšããŸãã
GET / HTTP/1.1
Host: example.com
Accept-Language: ja
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãVary: Accept-Language
ãèšå®ããèšèªããšã«ç°ãªãã¬ã¹ãã³ã¹ããã£ãã·ã¥å¯èœã«ããŠããŸãã
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Vary: Accept-Language
<!DOCTYPE html>
<html>
<head><title>ãããã</title></head>
<body><h1>ããã«ã¡ã¯ïŒ</h1></body>
</html>
è£è¶³
äŸãã°ããŠãŒã¶Aã¯ãAccept-Language
ããããŒã®å€ããjaãïŒæ¥æ¬èªïŒã«èšå®ãããŠãŒã¶Bã¯ãenãïŒè±èªïŒã«èšå®ãããšããŸãããã®å ŽåããŠãŒã¶Aã¯æ¥æ¬èªã®ããŒãžãããŠãŒã¶Bã¯è±èªã®ããŒãžãèŠæ±ããããšã«ãªããŸããåãURLã§ãã£ãŠããèšèªèšå®ã«ãã£ãŠç°ãªãå
容ã®ããŒãžãæäŸãããŸãããã®ãããªç¶æ³ã§ã¯ããã£ãã·ã¥ãé©åã«åäœããããã«ããããã«Vary
ããããŒãå¿
èŠã§ãããµãŒããŒãã¬ã¹ãã³ã¹ã«Vary: Accept-Language
ãå«ããããšã§ããã£ãã·ã¥ã¯Accept-Language
ã®å€ã«å¿ããŠç°ãªãããŒãžãä¿åããé©åãªèšèªã®ããŒãžãæäŸã§ããããã«ãªããŸãã
WWW-Authenticate
WWW-Authenticate
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠãHTTPãµãŒããŒãã¯ã©ã€ã¢ã³ãã«å¯ŸããŠèªèšŒãèŠæ±ããéã«äœ¿çšãããHTTPããããŒã§ãããã®ããããŒãåãåã£ãã¯ã©ã€ã¢ã³ãã¯ãèªèšŒæ
å ±ãAuthorization
ããããŒã«å«ããŠåãªã¯ãšã¹ãããå¿
èŠããããŸãã
WWW-Authenticate
ããããŒã®æ§æã以äžã«ç€ºããŸãã
WWW-AuthenticateããããŒã®æ§æ
WWW-Authenticate: <èªèšŒæ¹åŒ> realm="<èªèšŒé å>"
<èªèšŒæ¹åŒ>
Basic
,Digest
,Bearer
ãªã©ã®èªèšŒæ¹åŒãæå®
realm="<èªèšŒé å>"
- èªèšŒãå¿ èŠãªé åã瀺ãïŒãã°ã€ã³ç¯å²ãªã©ïŒ
WWW-Authenticate
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããèªèšŒãå¿ èŠãªããŒãžã«ã¢ã¯ã»ã¹ãããšããŸãã
GET /protected-resource HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãèªèšŒãèŠæ±ããŠããŸãã
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Secure Area"
Content-Length: 0
401 Unauthorized
ã¯èªèšŒãå¿
èŠã§ããããšã瀺ããŠããŸããWWW-Authenticate: Basic realm="Secure Area"
ã¯BasicèªèšŒãèŠæ±ãã"Secure Area"
ãšããé åã®èªèšŒãå¿
èŠã§ããããšã瀺ããŠããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ãã¯Authorization
ããããŒã远å ããŠåãªã¯ãšã¹ãããŸãã
GET /protected-resource HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
dXNlcm5hbWU6cGFzc3dvcmQ=
ã¯username:password
ãBase64ãšã³ã³ãŒãããå€ã§ãã
Entity HeaderïŒãšã³ãã£ãã£ããããŒïŒã®äžèЧ
HTTPããã㌠| 説æ |
Allow | æå®URIã§äœ¿çšå¯èœãªHTTPã¡ãœããããªã¹ãåããã¯ã©ã€ã¢ã³ãã«éç¥ããã¬ã¹ãã³ã¹ããã㌠|
Content-Encoding | ã¬ã¹ãã³ã¹ããã£ãã©ã®ãšã³ã³ãŒãã£ã³ã°æ¹åŒïŒå§çž®æ¹åŒïŒã§ãšã³ã³ãŒããããŠãããã瀺ãããã㌠|
Content-Language | ã¬ã¹ãã³ã¹ããã£ã䜿çšããèšèªãæå®ããå€èšèªå¯Ÿå¿ãµã€ãã§äœ¿çšãããããã㌠|
Content-Length | ã¬ã¹ãã³ã¹ããã£ã®ãµã€ãºïŒãã€ãåäœïŒã瀺ããé©åãªåŠçãå¯èœã«ããããã㌠|
Content-Location | ã¬ã¹ãã³ã¹ã察å¿ãããªãœãŒã¹ã®URIã瀺ããã³ã³ãã³ãã®äœçœ®ãæç¢ºã«ããããã㌠|
Content-Range | ã¬ã¹ãã³ã¹ããã£ããªãœãŒã¹ã®äžéšã§ããå Žåã«ããã®ç¯å²ïŒãã€ãç¯å²ïŒã瀺ãããã㌠|
Content-Type | ã¬ã¹ãã³ã¹ããã£ã®ã¡ãã£ã¢ã¿ã€ãïŒMIMEã¿ã€ãïŒãæå®ããããã㌠|
Expires | ãã£ãã·ã¥ã®æå¹æéãæå®ããã¯ã©ã€ã¢ã³ãããã£ãã·ã¥ãå©çšããã倿ããããã㌠|
Last-Modified | ãªãœãŒã¹ã®æçµæŽæ°æ¥æãéç¥ãããã£ãã·ã¥ã®ææ°æ§ã倿ããããã®ããã㌠|
Allow
Allow
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠãæå®ããURIã§äœ¿çšå¯èœãªHTTPã¡ãœããããªã¹ãåããã¯ã©ã€ã¢ã³ãã«éç¥ããããã®HTTPããããŒã§ããäž»ã«405 Method Not Allowed
ã®ã¬ã¹ãã³ã¹ãšãšãã«äœ¿çšãããã©ã®ã¡ãœãããèš±å¯ãããŠããããæç€ºããŸãã
Allow
ããããŒã®æ§æã以äžã«ç€ºããŸãã
AllowããããŒã®æ§æ
Allow: <ã¡ãœãã1>, <ã¡ãœãã2>, âŠ
<ã¡ãœãã>
- èš±å¯ãããHTTPã¡ãœãããã«ã³ãåºåãã§èšè¿°ããŸãã
Allow
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããDELETE
ã¡ãœããã§HTTPãªã¯ãšã¹ããéä¿¡ãããšããŸãã
DELETE /resource HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãDELETE
ãèš±å¯ããŠããªãå Žåã405 Method Not Allowed
ãè¿ãã䜿çšå¯èœãªã¡ãœãããAllow
ããããŒã§éç¥ããŸãã
HTTP/1.1 405 Method Not Allowed
Allow: GET, POST, HEAD
Content-Length: 0
405 Method Not Allowed
ã¯ã¯ã©ã€ã¢ã³ããéã£ãã¡ãœãã(DELETE
)ãèš±å¯ãããŠããªãããšã瀺ããŠããŸããAllow: GET, POST, HEAD
ã§èš±å¯ãããŠããã¡ãœãããéç¥ããŠããŸãã
Content-Encoding
Content-Encoding
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠãããã£ãã©ã®ãšã³ã³ãŒãã£ã³ã°æ¹åŒïŒå§çž®æ¹åŒïŒã§ãšã³ã³ãŒããããŠãããã瀺ãHTTPããããŒã§ããã¯ã©ã€ã¢ã³ãã¯ãã®ããããŒãèŠãŠãããŒã¿ãé©åã«ãã³ãŒãïŒå±éïŒããŸãã
Content-Encoding
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Content-EncodingããããŒã®æ§æ
Content-Encoding: <ãšã³ã³ãŒãã£ã³ã°æ¹åŒ>
<ãšã³ã³ãŒãã£ã³ã°æ¹åŒ>
gzip
â Gzipå§çž®ãæãäžè¬çãªå§çž®æ¹åŒã§ããcompress
â Unixcompress
ã³ãã³ãã®å§çž®ïŒã»ãŒäœ¿çšãããªãïŒdeflate
â Zlibå§çž®br
â Brotli å§çž®ïŒHTTP/2以éã§æšå¥šïŒidentity
â äœããšã³ã³ãŒããããŠããªãïŒããã©ã«ãïŒ
- è€æ°ã®ãšã³ã³ãŒãã£ã³ã°ãé©çšãããå Žåãã«ã³ã , ã§åºåããŸãã
- äŸïŒ
Content-Encoding: gzip, identity
- äŸïŒ
Content-Encoding
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«ãªãœãŒã¹ããªã¯ãšã¹ãããŠããŸãããã®éãã¯ã©ã€ã¢ã³ãã¯Accept-Encoding
ããããŒã§ãgzip
ãdeflate
ãbr
ããããã®å§çž®æ¹åŒãåãå
¥ãå¯èœã§ããããšããµãŒããŒã«éç¥ããŠããŸãã
GET /resource HTTP/1.1
Host: example.com
Accept-Encoding: gzip, deflate, br
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒã¯gzip
å§çž®ãããã¬ã¹ãã³ã¹ãè¿ããŠããŸãã
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html
Content-Length: 1024
[å§çž®ãããHTMLããŒã¿]
Content-Encoding: gzip
ã¯ããã£ãgzip
ã§å§çž®ãããŠããããšã瀺ããŠããŸããã¯ã©ã€ã¢ã³ãã¯ãããè§£åããŠå
ã®HTMLããŒã¿ã«æ»ããŸãã
Content-Language
Content-Language
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠãããã£ïŒã³ã³ãã³ãïŒã䜿çšããŠããèšèªãæå®ããããã®HTTPããããŒã§ããäž»ã«ãå€èšèªå¯Ÿå¿ã®Webãµã€ãã§ããµãŒããŒãã©ã®èšèªã®ã³ã³ãã³ããè¿ããããã¯ã©ã€ã¢ã³ãã«éç¥ããããã«äœ¿ãããŸãã
Content-Language
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Content-LanguageããããŒã®æ§æ
Content-Language: <èšèªã³ãŒã>
<èšèªã³ãŒã>
- ISO 639-1 èšèªã³ãŒãïŒäŸ:
ja
,en
,fr
,de
ïŒ
- ISO 639-1 èšèªã³ãŒãïŒäŸ:
- è€æ°ã®èšèªãæå®å¯èœ
- è±èªãšãã©ã³ã¹èªã®äž¡æ¹ã§æžãããŠããã³ã³ãã³ãã®å Žå
Content-Language: en, fr
ã®ããã«ã«ã³ãåºåãã§èšè¿°ããŸãã
- è±èªãšãã©ã³ã¹èªã®äž¡æ¹ã§æžãããŠããã³ã³ãã³ãã®å Žå
Content-Language
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããexample.com
ã«HTTPãªã¯ãšã¹ããããšããŸãã
GET / HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒãæ¥æ¬èªã®ã³ã³ãã³ããè¿ãå Žåã«ã¯ã以äžã®ãããªHTTPã¬ã¹ãã³ã¹ã«ãªããŸãã
HTTP/1.1 200 OK
Content-Language: ja
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
<html>
<head><title>ããã«ã¡ã¯</title></head>
<body><h1>ããããïŒ</h1></body>
</html>
ã¯ã©ã€ã¢ã³ãã¯Content-Language: ja
ãèŠãŠããã®ããŒãžãæ¥æ¬èªã§ãããšå€æã§ããŸãã
Content-Languageã®çšé
- Webãµã€ããå€èšèªå¯Ÿå¿ããŠããå Žåãæ£ããèšèªæ å ±ãæäŸã§ããã
- æ€çŽ¢ãšã³ãžã³ãé©åãªèšèªãèªèããæ€çŽ¢çµæã®èšèªãæé©åã§ããã
- é³å£°èªã¿äžããªã©ã§ãæ£ããèšèªãšããŠèªèãããã
Content-Length
Content-Length
ããããŒã¯ãHTTPã¡ãã»ãŒãžã®ããã£ã®ãµã€ãºïŒãã€ãåäœïŒãæå®ããHTTPããããŒã§ãããµãŒããŒãã¯ã©ã€ã¢ã³ãã¯ããã®ããããŒã䜿ã£ãŠããã£ã®ããŒã¿ãã©ããããã®é·ããªã®ããææ¡ããé©åã«åŠçããŸãã
Content-Length
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Content-LengthããããŒã®æ§æ
Content-Length: <ãã€ãæ°>
<ãã€ãæ°>
- ããã£ã®ãµã€ãºïŒåäœ: ãã€ãïŒ
Content-Length
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
ã¯ã©ã€ã¢ã³ããPOST
ãªã¯ãšã¹ãã§ããŒã¿ãéä¿¡ããéã«Content-Length
ããããŒãçšããããšãã§ããŸãã
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 27
{"name": "Alice", "age": 25}
Content-Length: 27
ã¯ããã£ã®é·ãã27ãã€ãã§ããããšã瀺ããŠããããµãŒããŒã¯ãã®ããããŒãèŠãŠãåä¿¡ããããŒã¿ãµã€ãºã確èªããããšãã§ããŸãã
HTTPã¬ã¹ãã³ã¹äŸ
ãµãŒããŒã1,234ãã€ãã®HTMLãè¿ãå Žåã®HTTPã¬ã¹ãã³ã¹ã以äžã«ç€ºããŸãã
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>
Content-Length: 1234
ã¯ã¬ã¹ãã³ã¹ã®ããã£ã1,234ãã€ãã§ããããšã瀺ããŠãããã¯ã©ã€ã¢ã³ãã¯ãããèŠãŠãããŒã¿ãå®å
šã«åä¿¡ããããã倿ããããšãã§ããŸãã
Content-Location
Content-Location
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããªãœãŒã¹ïŒã³ã³ãã³ãïŒã®åºæã®äœçœ®ïŒURIïŒã瀺ãããã®HTTPããããŒã§ããããã¯ãã¯ã©ã€ã¢ã³ãã«å¯ŸããŠããã®ã¬ã¹ãã³ã¹ãã©ã®URIã«å¯Ÿå¿ããã®ãããæç¢ºã«ããããã«äœ¿çšãããŸãã
Content-Location
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Content-LocationããããŒã®æ§æ
Content-Location: <URI>
<URI>
- ã¬ã¹ãã³ã¹ã察å¿ãããªãœãŒã¹ã®å ŽæïŒçµ¶å¯ŸURIãŸãã¯çžå¯ŸURIïŒ
Content-Location
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯/latest-report
ãšãããšã³ããã€ã³ãã«ã¢ã¯ã»ã¹ããŠããŸãã
GET /latest-report HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒã¯/latest-report
ãšãããšã³ããã€ã³ãã/reports/2025-01.pdf
ãšããå
·äœçãªãªãœãŒã¹ã«å¯Ÿå¿ããŠããããšã瀺ããŠããŸãã
HTTP/1.1 200 OK
Content-Location: /reports/2025-01.pdf
Content-Type: application/pdf
[PDFããŒã¿]
Content-Range
Content-Range
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠãã¬ã¹ãã³ã¹ã®ããã£ããªãœãŒã¹ã®äžéšã§ããå Žåã«ããã®ç¯å²ïŒãã€ãç¯å²ïŒã瀺ãHTTPããããŒã§ããäž»ã«éšåé
ä¿¡ïŒRangeãªã¯ãšã¹ãïŒã«äœ¿çšãããåç»ã¹ããªãŒãã³ã°ã倧ããªãã¡ã€ã«ã®åå²ããŠã³ããŒããªã©ã§åœ¹ç«ã¡ãŸãã
Content-Range
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Content-RangeããããŒã®æ§æ
ãªãœãŒã¹ã®ãµã€ãºãåããå Žå
Content-Range: bytes <éå§äœçœ®>-<çµäºäœçœ®>/<å
šäœã®ãµã€ãº>
ãªãœãŒã¹ã®ãµã€ãºãäžæãªå Žå
Content-Range: bytes <éå§äœçœ®>-<çµäºäœçœ®>/*
<éå§äœçœ®>-<çµäºäœçœ®>
- è¿ãããç¯å²ïŒãã€ãåäœïŒ
/<å šäœã®ãµã€ãº>
- å ã®ãªãœãŒã¹å šäœã®ãµã€ãº
*
ã䜿ããšãå šäœã®ãµã€ãºãäžæãªå Žåã§ãéšåç¯å²ã瀺ãããšãã§ããã
Content-Range
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ããexample.com/video.mp4
ã®äžéšïŒ1000ïœ1999ãã€ãïŒãèŠæ±ããŠããŸãã
GET /video.mp4 HTTP/1.1
Host: example.com
Range: bytes=1000-1999
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãèŠæ±ãããéšåããŒã¿ïŒ1000ïœ1999ãã€ãïŒãè¿ããŠããŸãã
HTTP/1.1 206 Partial Content
Content-Range: bytes 1000-1999/500000
Content-Length: 1000
Content-Type: video/mp4
[èŠæ±ãããåç»ããŒã¿ïŒ1000ãã€ãïŒ]
206 Partial Content
ã¯ãªã¯ãšã¹ããããç¯å²ã®ããŒã¿ãè¿ãããšç€ºããŠããŸããContent-Range: bytes 1000-1999/500000
ã¯å
šäœ500,000ãã€ãã®ãã¡ã1000ïœ1999ãã€ãã®ããŒã¿ãè¿ããŠããããšã瀺ããŠããŸããContent-Length: 1000
ã¯ã¬ã¹ãã³ã¹ã®ããŒã¿ãµã€ãºã瀺ããŠããŸãã
Content-Type
Content-Type
ããããŒã¯ãHTTPã¡ãã»ãŒãžã®ããã£ïŒããŒã¿ïŒã®ã¡ãã£ã¢ã¿ã€ãïŒMIMEã¿ã€ãïŒãæå®ããHTTPããããŒã§ãããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã§äœ¿çšããããªã¯ãšã¹ãããã£ãšã¬ã¹ãã³ã¹ããã£ã®çš®é¡ã瀺ããŸãã
Content-Type
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Content-TypeããããŒã®æ§æ
Content-Type: <ã¡ãã£ã¢ã¿ã€ã>; <ãªãã·ã§ã³>
<ã¡ãã£ã¢ã¿ã€ã>
text/html
,application/json
,image/png
ãªã©
<ãªãã·ã§ã³>
ïŒä»»æïŒcharset=UTF-8
ãªã©ã®è¿œå æ å ±
Content-Type
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ããJSONããŒã¿ããµãŒããŒã«éä¿¡ããŠããŸãã
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 32
{"name": "Alice", "age": 25}
Content-Type: application/json
ã«ãã£ãŠãµãŒããŒã«JSONããŒã¿ãéãããšã瀺ãŠããŸãã
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãHTMLãã¯ã©ã€ã¢ã³ãã«è¿ããŠããŸãã
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1024
<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>
Content-Type: text/html; charset=UTF-8
ã«ãã£ãŠãã¬ã¹ãã³ã¹ãHTMLã§ãããUTF-8ãšã³ã³ãŒãã£ã³ã°ã§ããããšãåãããŸãã
ãã䜿ãããContent-Typeã®äŸ
text/html
ïŒHTMLããã¥ã¡ã³ãtext/plain
ïŒãã¬ãŒã³ããã¹ãapplication/json
ïŒJSONããŒã¿application/xml
ïŒXMLããŒã¿image/png
ïŒPNGç»åimage/jpeg
ïŒJPEGç»åmultipart/form-data
ïŒãã¡ã€ã«ã¢ããããŒãçšïŒãã©ãŒã ããŒã¿ïŒapplication/octet-stream
ïŒãã€ããªããŒã¿ïŒæ±çšïŒ
Expires
Expires
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããã£ãã·ã¥ã®æå¹æéãæå®ããHTTPããããŒã§ããã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ããããã·ïŒã¯ããã®æ¥æãéãããŸã§ãã£ãã·ã¥ãå©çšããæ°ãããªã¯ãšã¹ããéããã«ãã£ãã·ã¥ã䜿ãããšãã§ããŸãã
Expires
ããããŒã®æ§æã以äžã«ç€ºããŸãã
ExpiresããããŒã®æ§æ
Expires: <æ¥æïŒGMT圢åŒïŒ>
<æ¥æ>
RFC 1123
ãã©ãŒãããïŒäŸ:Wed, 21 Oct 2025 07:28:00 GMT
ïŒ
Expires
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ããç»åããªã¯ãšã¹ãããŠããŸãã
GET /logo.png HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãExpires
ããããŒãå«ããŠè¿ããŠããŸãã
HTTP/1.1 200 OK
Content-Type: image/png
Expires: Wed, 21 Oct 2025 07:28:00 GMT
[ç»åããŒã¿]
Expires: Wed, 21 Oct 2025 07:28:00 GMT
ã«ãã£ãŠãã¯ã©ã€ã¢ã³ããã®æ¥æãŸã§ãã£ãã·ã¥ãå©çšããããšãã§ããŸãã
Last-Modified
Last-Modified
ããããŒã¯ãHTTPã¬ã¹ãã³ã¹ã«ãããŠããªãœãŒã¹ïŒã³ã³ãã³ãïŒã®æçµæŽæ°æ¥æãéç¥ããHTTPããããŒã§ãããã©ãŠã¶ããããã·ã¯ããã®æ
å ±ã䜿ã£ãŠãã£ãã·ã¥ãææ°ãã©ããã倿ããäžèŠãªãªã¯ãšã¹ããæžãããŸãã
Last-Modified
ããããŒã®æ§æã以äžã«ç€ºããŸãã
Last-ModifiedããããŒã®æ§æ
Last-Modified: <æ¥æïŒGMT圢åŒïŒ>
<æ¥æ>
RFC 1123
ãã©ãŒãããïŒäŸ:Wed, 21 Oct 2025 07:28:00 GMT
ïŒ
Last-Modified
ããããŒã®å
·äœäŸã以äžã«ç€ºããŸãã
HTTPãªã¯ãšã¹ãäŸ
以äžã®HTTPãªã¯ãšã¹ãã§ã¯ãã¯ã©ã€ã¢ã³ããindex.html
ããªã¯ãšã¹ãããŠããŸãã
GET /index.html HTTP/1.1
Host: example.com
HTTPã¬ã¹ãã³ã¹äŸ
以äžã®HTTPã¬ã¹ãã³ã¹ã§ã¯ããµãŒããŒãLast-Modified
ãå«ããŠã¬ã¹ãã³ã¹ããŠããŸãã
HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT
<!DOCTYPE html>
<html>
<head><title>Example</title></head>
<body><h1>Welcome!</h1></body>
</html>
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT
ã«ãã£ãŠããã®ããŒãžã¯2025幎10æ21æ¥ 07:28:00 GMTã«æŽæ°ãããããšãåãããŸãã