ãªã調ã¹ãã
Praha Challengeãšããããã°ã©ãã³ã°ã»ããŒããã£ã³ãã«åå ããããšã«ãªããŸãããæåã®èª²é¡ãšããŠããã䜿ãHTTPãããã«ã€ããŠèª¿ã¹ãŠãã¯ã€ãºäœã£ãŠãã¢ïŒä»ã®åå è ã®äººïŒã«åºé¡ãããšãããã®ã«åãçµã¿ãŸããã
HTTPãããã£ãŠäœãªã®ããšãã©ããªã®ãããã®ãã¿ãããªã®ã¯æ¬èªãã ãããããšã¯ããã®ã§ãããåŠãã ããšãŸãšããŠã¿ããã¯ã€ãºäœã£ããã£ãŠããã¢ãŠããããã¯ããããšãªãã£ãã®ã§ãåŠã³ã«ãªããŸããã
ãã£ãããªã®ã§èª¿ã¹ãå 容ããŸãšããŠèšäºã«ããããšæããŸããã
HTTPãããã®éèŠæ§
HTTPãããã¯ãHTTPã®ã¡ãã»ãŒãžããã£ã«å¯Ÿããä»å çãªæ å ±ïŒããããã¡ã¿ããŒã¿ïŒãè¡šçŸãããã®ã§ããã¯ã©ã€ã¢ã³ãããµãŒããŒã¯HTTPã®ã¡ãã»ãŒãžãåãåã£ããããŸãããããèŠãŠããã£ã«å¯Ÿããæåã決å®ããŸãã
ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©ãèšå®ããèªèšŒãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®éä¿¡åæ°ãšéãç¯çŽããããã®ãã£ãã·ã¥ãªã©ã¯ãããã®æ å ±ããã£ãŠå®çŸããæ©èœã§ãããããã®çš®é¡ãæ±ãæ¹ãç解ããŠããããšã¯ãWEBãµãŒãã¹ãæ±ãäžã§é¿ããŠã¯éããŸããã
äž»èŠãªHTTPããã
Host
HTTPãªã¯ãšã¹ããéä¿¡ãããå ã®ãµãŒããŒã®ãã¹ãåãšããŒãçªå·ãæå®ããŸãã
Host: <host>:<port>
<host>
⊠ãµãŒããŒã®ãã¡ã€ã³å ïŒäŸïŒexample.jp<port>
⊠æå®ããããŒãçªå·ïŒæå®ãããªãã£ãå ŽåãHTTPSã®URLã§ããã°443ãHTTPã®URLã§ããã°80ãšã¿ãªãããïŒ
Host
ã¯ãã¹ãŠã®ãªã¯ãšã¹ãã¡ãã»ãŒãžã§å¿
ãæå®ããå¿
èŠããããŸãã
Content-type
ãã®ã¡ãã»ãŒãžã®ããã£ã®å 容ãã©ã®ãããªçš®é¡ãªã®ãããMIMEïŒMultipurpose Internet Mail ExtensionsïŒãšããé»åã¡ãŒã«ã®ä»æ§ããæåããŠããä»æ§ã䜿ã£ãŠè¡šçŸãããããã§ãã
Content-Type: <type>/<subtype>; charaset=<charaset>
<type>/<subtype>
⊠ã¡ãã£ã¢ã¿ã€ããMIMEã®ä»æ§ã<type>
⊠ã¿ã€ãããªãœãŒã¹ã®è¡šçŸã®çš®é¡ããã£ããæå®ãããRFC2046ã§9ã€å®çŸ©ãããŠãããïŒäŸïŒapplication<subtype>
⊠ãµãã¿ã€ããã¿ã€ãã«çŽã€ããŠãªãœãŒã¹ã®è¡šçŸã®çš®é¡ã詳现ã«æå®ãããïŒäŸïŒxhtml+xml<charaset>
⊠ãªãœãŒã¹ã®æåãšã³ã³ãŒãã£ã³ã°ã®æå®ãçç¥å¯èœã
ã¿ã€ãã®äžèŠ§
ã¿ã€ã | æå³ | ã¡ãã£ã¢ã¿ã€ãã®äŸ |
---|---|---|
text | 人ãèªãã§çŽæ¥ç解ã§ããããã¹ã | text/plain |
image | ç»åããŒã¿ | image/jpeg |
audio | é³å£°ããŒã¿ | audio/mpeg |
video | æ åããŒã¿ | video/mp4 |
application | ãã®ä»ã®ããŒã¿ | application/pdf |
multipart | è€æ°ã®ããŒã¿ããæãè€åããŒã¿ | multipart/related |
message | é»åã¡ãŒã«ã¡ãã»ãŒãž | message/rfc822 |
model | è€æ°æ¬¡å ã§æ§æããã¢ãã«ããŒã¿ | model/vrml |
example | äŸç€ºçš | example/foo-bar |
User-agent
ãªã¯ãšã¹ããè¡ããŠãŒã¶ãŒãšãŒãžã§ã³ããœãããŠã§ã¢ïŒãŠã§ããã©ãŠã¶ãªã©ã®ããšïŒã®OSããã³ããŒãããŒãžã§ã³ãèå¥ããããã®ãããã®ããšã§ãã
User-Agent: <product>/<product-version><comment>
<product>
⊠補åã®èå¥åãïŒäŸïŒMozilla<product-version>
⊠補åã®ããŒãžã§ã³æ å ±ã<comment>
⊠補åã®ãã詳现ãªæ å ±
äŸãã°Firefoxã®User-agentã¯äžèšã®ããã«ãªããŸã
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Mozilla/5.0
ã¯ãMozillaãšäºææ§ããããã©ãŠã¶ã§ããããšã瀺ããŠããŸãïŒçŸåšã¯ã»ãŒãã¹ãŠã®ãã©ãŠã¶ã§å ±éïŒWindows NT 6.1; Win64; x64; rv:47.0
ã¯ãWindows7ã§åããŠããããšã瀺ããŠããŸããrv
ã¯GeckoïŒåŸè¿°ïŒã®ããŒãžã§ã³ã§ããGecko/20100101
ã¯ãHTMLã¬ã³ããªã³ã°ãšã³ãžã³GeckoãæèŒãããã©ãŠã¶ã§ããããšã瀺ããŠããŸãïŒ20100101
ã¯åºå®æååïŒFirefox/47.0
ã¯ããã©ãŠã¶ãŒãFirefox47.0ã§ããããšã瀺ããŠããŸãã
Accept
ã¡ãã£ã¢ã¿ã€ããæåãšã³ã³ãŒãã£ã³ã°ã¯ããµãŒããŒãäžæ¹çã«æ±ºå®ããã ãã§ã¯ãªããã¯ã©ã€ã¢ã³ããšäº€æžããŠæ±ºããããšãã§ãããã®ææ³ã¯ã³ã³ãã³ãããŽã·ãšãŒã·ã§ã³ãšåŒã°ããŸããAcceptã¯ãã¯ã©ã€ã¢ã³ããåŠçã§ããããŒã¿ã®çš®é¡ããµãŒããŒã«éç¥ãããããã§ãã
Accept: <type>/<subtype>,<type>/<subtype>, ..., <type>/<subtype>;q=<qvalue>,...
<type>/<subtype>
⊠ã¯ã©ã€ã¢ã³ããåŠçã§ããã¡ãã£ã¢ã¿ã€ããMIMEã¿ã€ãã§äŒããŸãããµãŒããŒã¯ããã®ææ¡ã®ãã¡äžã€ãéžæããŸãã;q=<qvalue>
⊠ã¡ãã£ã¢ã¿ã€ãã®åªå é äœã決ããéã¿ã§ã0ã1ã®æ°å€ã§è¡šããŸããæ°å€ã倧ããã»ããåªå ãããŸãã
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8
ãã®å Žåãtext/html
ãapplication/xhtml+xml
ãimage/webp
ã¯ããã©ã«ãã®1ã§æåªå
ãapplication/xml
ã0.9ããã以å€ã0.8ãšããåªå
床ã§ãã
Referer
çŸåšãªã¯ãšã¹ãããŠããããŒãžãžãªã³ã¯ããŠãããåã®ãŠã§ãããŒãžã®ã¢ãã¬ã¹ã§ããã©ãã®ãŠã§ããµã€ããããªã³ã¯ãããŠããããè¡šããŠããŸãã
Referer: <url>
<url>
⊠çŽåã®ããŒãžã®URIã§ãã
Refererãããã«ã€ããŠã¯ã詳现ããŠãŒã¹ã±ãŒã¹ãšããŠåŸè¿°ããŸãã
Accept-Encoding
ã³ã³ãã³ãããŽã·ãšãŒã·ã§ã³ã䜿çšããŠãã¯ã©ã€ã¢ã³ããåŠçã§ããã³ã³ãã³ãã®ãšã³ã³ãŒãã£ã³ã°ïŒå§çž®ã¢ã«ãŽãªãºã ãªã©ïŒããµãŒããŒã«éç¥ãããããã§ãããµãŒããŒã¯ãææ¡ããããã®ããäžã€ãéžæããŠäœ¿çšããContent-Encoding
ãããã䜿çšããŠã¯ã©ã€ã¢ã³ãã«éžæçµæãç¥ãããŸãã
Accept-Encoding: <encoding>,<encoding>, ⊠,<encoding>;q=<qvalue>, âŠ
<encoding>
âŠgzip
,compress
,deflate
ãªã©ã®å§çž®åœ¢åŒãæå®ããããidentity
ãèšå®ããŠãšã³ã³ãŒãããªãããšãæå®ããããšãã§ããŸãããŸããqvalue
ã§åªå é äœã決ããããšãã§ããŸãã
Authorization
ãŠãŒã¶ãŒãšãŒãžã§ã³ãããµãŒããŒããèªèšŒãåããããã®èšŒæ蚌ãä¿æãããããã§ãããŠãŒã¶ãŒãšãŒãžã§ã³ãããã®ãªã¯ãšã¹ããéãããããšã«ãµãŒããŒãã401 Unauthorized
ãè¿ã£ãŠããå ŽåïŒã¢ã¯ã»ã¹ããããŒãžã®è¡šç€ºã«èªèšŒãå¿
èŠã ã£ãå ŽåïŒããŠãŒã¶ãŒãšãŒãžã§ã³ãã®æ¬¡ã®ãªã¯ãšã¹ãã§äœ¿çšãããïŒèªèšŒã«å¿
èŠãªæ
å ±ãéä¿¡ããïŒããšãå€ããããã§ãã
Authorization: <type> <credentials>
<type>
⊠èªèšŒã®çš®é¡ã§ãBasic
ãDigest
ãBearer
ãªã©ãèšå®ãããã<credentials>
⊠èªèšŒæ å ±ãèšå®ããããäŸãã°<type>
ã«Basic
ãèšå®ãããå Žåãã³ãã³ã§çµåãããŠãŒã¶ãŒåãšãã¹ã¯ãŒããBase64ã§ãšã³ã³ãŒãããæååãèšå®ãããã
Authorization
ãããã«ã€ããŠã¯ã詳现ããŠãŒã¹ã±ãŒã¹ãšããŠåŸè¿°ããŸãã
Location
ãµãŒããŒããªã¯ãšã¹ããåä¿¡ãããšãããŠãŒã¶ãŒãšãŒãžã§ã³ããèŠæ±ããURLãšã¯å¥ã®URLã«ãªãã€ã¬ã¯ãããããå Žåã«ã¬ã¹ãã³ã¹ã«èšå®ãããããã§ãã
Location: <url>
<url>
⊠ãªãã€ã¬ã¯ãããããå ã®URLã
ãŠãŒã¹ã±ãŒã¹
Refererãããã®ãªã¹ã¯ã«ã€ããŠ
Referer
ãããã«ãã£ãŠéãããæ
å ±ã¯ãHTMLèŠçŽ ã«ç¹å®ã®å±æ§ãèšå®ãããå¥ã®ããããèšå®ããããšã§å¶åŸ¡ããããšãã§ããŸãã
ãªãRefererã«ãã£ãŠéãããæ å ±ã®å¶åŸ¡ãå¿ èŠãªã®ãïŒ
Refererãããã«ã¯ããã©ã€ãã·ãŒãšã»ãã¥ãªãã£ã®ãªã¹ã¯ããããŸããRefererãžã®æ
å ±ã®æž¡ãæ¹ã«ãã£ãŠã¯ããŠãŒã¶ãŒã®æ©å¯æ
å ±ãæŒæŽ©ããŠããŸãå¯èœæ§ããããŸããããšãã°ãããŒã¿ã®éä¿¡ã«POST
ã§ã¯ãªãGET
ã䜿çšããã¯ãšãªãã©ã¡ãŒã¿ã«ãŠãŒã¶ãŒã®ãã¹ã¯ãŒããªã©ãèŒããå ŽåããŠãŒã¶ãŒã®ãã¹ã¯ãŒãã¯ã¯ãšãªãã©ã¡ãŒã¿ãšããŠwebãµãŒããŒã®ã¢ã¯ã»ã¹ãã°ã»ãã¡ã€ã¢ãŠã©ãŒã«ã®ãã°ã»ãããã·ãµãŒããŒã®ãã£ãã·ã¥ããã°ã»ãã©ãŠã¶ã®ãã£ãã·ã¥ãå±¥æŽãªã©ãããŸããŸãªå Žæã«èšé²ãããŠããŸããŸãã
äžèšã®ãããªãªã¹ã¯ã軜æžããããã«ãäžèšã®ãããªå¯Ÿçãåãããšãã§ããŸãã
- æŒæŽ©ããŠã¯ãŸããæ å ±ã®éä¿¡ã«ã¯POSTã䜿çšãã
- éä¿¡ãããã³ã«ã¯HTTPã§ã¯ãªãHTTPSã䜿çšããéä¿¡ãæå·åãã
Referrer-Policy
ãããã䜿çšããReferer
ãããã«ãã£ãŠéãããæ å ±ãå¶åŸ¡ããïŒåŸè¿°ïŒimg
ãa
ãªã©ã®HTMLèŠçŽ ã®rel
å±æ§ã«no-referrer
ãèšå®ããŠãReferer
ãããã«ãã£ãŠéãããæ å ±ãå¶åŸ¡ããimg
ãa
ãªã©ã®HTMLèŠçŽ ã®referrerpolicy
å±æ§ã䜿çšããReferer
ãããã«ãã£ãŠéãããæ å ±ãå¶åŸ¡ããïŒ2020幎12æ29æ¥æç¹ã§MDN Web Docsã§ã¯ãå®éšçãªæ©èœããšãããŠããïŒ
Referrer-Policy
ãããã«ãããªãã¡ã©ãŒæ
å ±ã®å¶åŸ¡
Referrer-Policy
ãããã䜿ãã°ãReferer
ã«ãã£ãŠéããããªãã¡ã©ãŒæ
å ±ãå¶åŸ¡ããããšãã§ããŸãã
Referrer-Policy: <policy>
-
<policy>
⊠ã©ã®ãããªå¶åŸ¡ãè¡ãããèšå®ã§ãããäžèšã®policyãå©çšã§ãããno-referrer
⊠ãã¹ãŠã®ãªãã¡ã©ãŒæ å ±ãçç¥ããããno-referrer-when-downgrade
âŠReferrer-Policy
ãèšå®ãããŠããªãå Žåã¯ãã®policyãæ¢å®å€ãšããŠèšå®ããããHTTPããHTTPãžã®éä¿¡ãHTTPSããHTTPSãžã®éä¿¡ãªã©ãããã³ã«ã®ã»ãã¥ãªãã£æ°Žæºãåäžã§ããå Žåããããã¯HTTPããHTTPSãžã®éä¿¡ãªã©æ¹åãããå Žåã¯ãURLã®ãªãªãžã³ã»ãã¹ã»ã¯ãšãªæåããªãã¡ã©ãŒãšããŠéä¿¡ããããHTTPSããHTTPãžã®éä¿¡ãªã©ãããã³ã«ã®ã»ãã¥ãªãã£æ°Žæºãäœäžããå Žåã¯ããã¹ãŠã®ãªãã¡ã©ãŒãçç¥ããããorigin
⊠ææžã®ãªãªãžã³ã®ã¿ãéä¿¡ãããããªãªãžã³ãšã¯ãURLã®ã¹ããŒã ã»ãã¹ãã»ããŒãã«ãã£ãŠå®çŸ©ãããïŒãã¹ã¯ãªãªãžã³ã«å«ãŸããªãïŒãorigin-when-cross-origin
⊠åäžãªãªãžã³éã§ãªã¯ãšã¹ããè¡ãå Žåããªãªãžã³ã»ãã¹ã»ã¯ãšãªãã©ã¡ãŒã¿ãéä¿¡ãããåäžãªãªãžã³ã§ãªãå Žåã¯ãªãªãžã³ã®ã¿éä¿¡ãããsame-origin
⊠åäžãªãªãžã³éã§ãªã¯ãšã¹ããè¡ãå Žåããªãã¡ã©ãŒãéä¿¡ãããåäžãªãªãžã³ã§ãªãå Žåã¯ãã¹ãŠã®ãªãã¡ã©ãŒæ å ±ãçç¥ããããstrict-origin
⊠HTTPããHTTPãžã®éä¿¡ãHTTPSããHTTPSãžã®éä¿¡ãªã©ãããã³ã«ã®ã»ãã¥ãªãã£æ°Žæºãåäžã§ããå Žåããããã¯HTTPããHTTPSãžã®éä¿¡ãªã©æ¹åãããå Žåãææžã®ãªãªãžã³ãéä¿¡ãããHTTPSããHTTPãžã®éä¿¡ãªã©ãããã³ã«ã®ã»ãã¥ãªãã£æ°Žæºãäœäžããå Žåã¯ããã¹ãŠã®ãªãã¡ã©ãŒãçç¥ããããstrict-origin-when-cross-origin
⊠åäžãªãªãžã³éã§ãªã¯ãšã¹ããè¡ãå Žåããªãªãžã³ã»ãã¹ã»ã¯ãšãªãã©ã¡ãŒã¿ãéä¿¡ãããåäžãªãªãžã³ã§ãªãå Žåã¯ããã¹ãŠã®ãªãã¡ã©ãŒãçç¥ããããunsafe-url
âŠãã¹ãŠã®ãªãã¡ã©ãŒæ å ±ãéä¿¡ãããã
åäžãªãªãžã³ããªã·ãŒã«ã€ããŠ
åè¿°ã®Referrer-Policy
ãããã«ãããªãã¡ã©ãŒæ
å ±ã®å¶åŸ¡ã§ã¯ããåäžãªãªãžã³éã§ãªã¯ãšã¹ããè¡ãå Žåãããåäžãªãªãžã³ã§ãªãå Žåããªã©ãåäžãªãªãžã³ãã©ãããšããæ¡ä»¶ãããã€ãã§ãŠããŸããããããªãªãžã³ããèªã¿èŸŒãŸããææžãã¹ã¯ãªããã«ã€ããŠããã®ãªãœãŒã¹ããä»ã®ãªãªãžã³ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããªãããã«å¶éããä»çµã¿ã®ããšãåäžãªãªãžã³ããªã·ãŒãšåŒã³ãŸãã
ãªãªãžã³ã®å®çŸ©
ãªãªãžã³ã¯ãURLã®ã¹ããŒã ïŒhttp://
, https://
ïŒããã¹ãïŒexample.com
ïŒãããŒãïŒ:80
, :443
ïŒã«ãã£ãŠå®çŸ©ãããŸãããã2ã€ã®ãŠã§ãã³ã³ãã³ãã«ãããŠãã¹ããŒã ããã¹ããããŒãããã¹ãŠäžèŽããå Žåããã®2ã€ã®ãŠã§ãã³ã³ãã³ãã¯åäžãªãªãžã³ã§ãããšãããŸãã
Authorization
ãããã«ããèªèšŒã«ã€ããŠ
ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã«å¶éãããã£ãŠããå ŽåãAuthorization
ãããã«èªèšŒæ
å ±ãä»äžããå¿
èŠããããŸããAuthorization
ãããã§èšå®ã§ããèªèšŒæ¹æ³ã3ã€çŽ¹ä»ããŸãã
Basic
èªèšŒ
"<username>:<password>
"ãbase64ã§ãšã³ã³ãŒãããæååãèªèšŒæ
å ±ãšããŠæ±ããŸããèªèšŒæ
å ±ããã³ãŒãå¯èœãªã®ã§ãããŒã¿ã®çèŽãªã©ãé²ãããã«ã¯HTTPSãããã³ã«ãå©çšããŠéä¿¡ãæå·åãããªã©ã®å¯Ÿå¿ãå¿
èŠã§ãã
Digest
èªèšŒ
ãµãŒããŒããéãããŠããã©ã³ãã ãªæååïŒnonceïŒãšãã¹ã¯ãŒããçµã¿åãããŠããã·ã¥å€ãçæãããããèªèšŒæ å ±ãšããŠæ±ãèªèšŒæ¹åŒã§ããèªèšŒæ å ±ã¯æå·åãããŠããŸãããã¡ãã»ãŒãžã®ããã£ã¯æå·åãããªããããã¡ãã»ãŒãžã®ããã£ã®çèŽãé²ãããã«ã¯HTTPSãããã³ã«ãå©çšããŠéä¿¡ãæå·åãããªã©ã®å¯Ÿå¿ãå¿ èŠã§ãã
Bearer
èªèšŒ
äºåã«å
¥æããããŒã¯ã³ïŒBearer tokenïŒãAuthorization
ãããã«èšå®ããŠãªã¯ãšã¹ããéãããµãŒããããã確èªããããšã§èªèšŒãè¡ãèªèšŒæ¹åŒã§ããã¯ã©ã€ã¢ã³ããäºåã«å
¥æããããŒã¯ã³ã¯ãèªå¯ãµãŒããŒã«èŠæ±ããŠçºè¡ããŠãããæ¹åŒïŒOAuthïŒã§ååŸããŸãã
Cache-Control
ãããã«ãããã£ãã·ã¥ã®å¶åŸ¡ã«ã€ããŠ
ãã£ãã·ã¥ãšã¯ãååŸããæ
å ±ãåå©çšããããã®ä»çµã¿ã§ãããã£ãã·ã¥ãããŸãå©çšããã°ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®éä¿¡åæ°ãšéãç¯çŽããããšãã§ããŸããCache-Control
ããããå©çšããã°ãæ
å ±ã®æ€èšŒïŒæ
å ±ãåååŸãã¹ããã©ãããå€æããïŒãšåååŸïŒãã£ãã·ã¥ãå©çšããæ¹ããŠæ
å ±ãååŸããïŒã®æ¡ä»¶ãèšå®ã§ããŸãã
no-store
Cache-Control: no-store
ãæå®ãããšãã¬ã¹ãã³ã¹ããã£ãã·ã¥ã«ä¿åã§ããªããªããŸãã
max-age
Cache-Control: max-age=<seconds>
ãæå®ãããšããã£ãã·ã¥ãä¿åãããŠãã<seconds>
ç§ãçµéãããŸã§ã¯ãªãœãŒã¹ã¯å€ããªããšã¿ãªãããæŽæ°ãããªããªããŸããã€ãŸãããã£ãã·ã¥ã®æå¹æéãèšå®ã§ããŸããèšå®ããæå»ãçµéããŠä»¥éã«ã¬ã¹ãã³ã¹ãåãåããšããã£ãã·ã¥ã¯æŽæ°ãããŸãã
no-cache
Cache-Control: no-cache
ãæå®ãããšãæ ŒçŽãããã¬ã¹ãã³ã¹ã¯ã䜿çšããåã«ããªããæ€èšŒãããŸãïŒæå¹æéãåããŠããªããŠãæ€èšŒãããŸãïŒã
must-revalidate
Cache-Control: must-revalidate
ãæå®ãããšãæ ŒçŽãããã¬ã¹ãã³ã¹ã¯ãæå¹æéãåããŠããå Žåã䜿çšããåã«ããªããæ€èšŒãããŸãã
åèæç®
- https://developer.mozilla.org/ja/docs/Web/HTTP/Headers
- https://developer.mozilla.org/ja/docs/Web/Security/Referer_header:_privacy_and_security_concerns
- https://developer.mozilla.org/ja/docs/Web/Security/Same-origin_policy
- https://developer.mozilla.org/ja/docs/Web/HTTP/Authentication#Authentication_schemes
- https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Cache-Control
- https://architecting.hateblo.jp/entry/2020/03/27/130535
- https://www.ryotosaito.com/blog/?p=264
- æžç± Webãæ¯ããæè¡ å±±æ¬éœå¹³ æè¡è©è«ç€Ÿ