103 Early Hints
HTTP ã® 103 Early Hints ã¯æ
å ±ã¬ã¹ãã³ã¹ã¹ãã¼ã¿ã¹ã³ã¼ãã§ããµã¼ãã¼ãæçµçãªã¬ã¹ãã³ã¹ããªã³ã¯ããäºå®ã®ãµã¤ãããªã½ã¼ã¹ã«é¢ãããã³ããè¨è¼ããã¬ã¹ãã³ã¹ãæºåãã¦ããéã«éä¿¡ãããå ´åãããã¾ãã
ããã«ããããµã¼ãã¼ãæçµçãªã¬ã¹ãã³ã¹ãæºåãéä¿¡ããåã«ããã©ã¦ã¶ã¼ããµã¤ãã«äºåæ¥ç¶ãããããªã½ã¼ã¹ã®äºåèªã¿è¾¼ã¿ãéå§ããããããã¨ãã§ãã¾ãã
æ©æãã³ãã§ç¤ºãããå
èªã¿ããããªã½ã¼ã¹ã¯ããã³ããåä¿¡ãããã¨ããã«ã¯ã©ã¤ã¢ã³ãã«ãã£ã¦åå¾ããã¾ãã
æ©æãã³ãã¬ã¹ãã³ã¹ã¯ã主ã«èªã¿è¾¼ã¾ãããªã½ã¼ã¹ã示ã Link ãããã¼ã¨ä½¿ç¨ãããã¨ãæå³ãã¦ãã¾ãã
ã¾ããæ©æãã³ãã®å¦çä¸ã«å¼·å¶ããã Content-Security-Policy ãããã¼ãæ ¼ç´ããã¦ããå ´åãããã¾ãã
ãµã¼ãã¼ã¯ãä¾ãã°ãªãã¤ã¬ã¯ãã«ç¶ãè¤æ°ã® 103 ã¬ã¹ãã³ã¹ãéä¿¡ãããã¨ãããã¾ãã
ãã©ã¦ã¶ã¼ã¯æåã®æ©æãã³ãã¬ã¹ãã³ã¹ã®ã¿ãå¦çãããªã¯ã¨ã¹ãããªãªã¸ã³éãªãã¤ã¬ã¯ãã®çµæã§ããå ´åã¯ããã®ã¬ã¹ãã³ã¹ãç ´æ£ããªããã°ãªãã¾ããã
ã¡ã¢: äºææ§ã¨ã»ãã¥ãªãã£ä¸ã®çç±ãããã¯ã©ã¤ã¢ã³ããæ å ±ã¬ã¹ãã³ã¹ãæ£ããå¦çãããã¨ãåãã£ã¦ããå ´åãé¤ãã HTTP/2 以éã§ã®ã¿ HTTP 103 Early Hints ã¬ã¹ãã³ã¹ãéä¿¡ãããã¨ãæ¨å¥¨ããã¾ãã
ã»ã¨ãã©ã®ãã©ã¦ã¶ã¼ã§ã¯ããã®çç±ã«ããã HTTP/2 以éã«å¯¾å¿ããããå¶éããã¦ãã¾ããä¸è¨ã®ãã©ã¦ã¶ã¼ã®äºææ§ãã確èªãã ããã ããã«ãããããããä¸è¨ã§ã¯ãéå¸¸ã®æ £ä¾ã«å¾ã£ã¦ã HTTP/1.1 ã¹ã¿ã¤ã«ã®è¡¨è¨ã使ç¨ãã¦ãã¾ãã
æ§æ
103 Early Hints
ä¾
>äºåæ¥ç¶ã®ä¾
次㮠103 ã®åæãã³ãã¬ã¹ãã³ã¹ã¯ããµã¼ãã¼ãã¯ã©ã¤ã¢ã³ããå
·ä½çãªå
ã®ãµã¼ãã¼ (https://cdn.example.com) ã«äºåæ¥ç¶ãããå¯è½æ§ããããã¨ã示ãåæãã³ãã¬ã¹ãã³ã¹ã表示ããããã®ã§ãã
HTML ã® rel=preconnect 屿§ã¨åæ§ã«ãããã¯ãã®ãã¼ã¸ã対象ã¨ãããªã½ã¼ã¹ã®å
ãããªã½ã¼ã¹ãå¿
è¦ã«ãªãå¯è½æ§ãé«ããã¨ã示ããã³ãã§ããããã©ã¦ã¶ã¼ããã®å
ã¸ã®æ¥ç¶ãäºåã«éå§ãããã¨ã§ãã¦ã¼ã¶ã¼ã®ä½¿ãåæãåä¸ããå¯è½æ§ããããã¨ã示ãã¾ãã
103 Early Hint
Link: <https://cdn.example.com>; rel=preconnect, <https://cdn.example.com>; rel=preconnect; crossorigin
ãã®ä¾ã§ã¯ãhttps://cdn.example.com ã« 2 åäºåæ¥ç¶ãã¾ãã
- æåã®æ¥ç¶ã¯ã CORS ã使ç¨ããã«åå¾ã§ãããªã½ã¼ã¹ï¼ç»åãªã©ï¼ãèªã¿è¾¼ãããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
- 2 ã¤ç®ã®æ¥ç¶ã«ã¯
crossorigin屿§ãå«ã¾ãã¦ããããã©ã³ããªã©ã® CORS ã§ä¿è·ããããªã½ã¼ã¹ãèªã¿è¾¼ãããã«ä½¿ç¨ããã¾ãã
CORS ã§ä¿è·ããããªã½ã¼ã¹ã¯ãå®å ¨ã«å¥åã®æ¥ç¶ã§ãã§ããããå¿ è¦ãããã¾ããå ãã 1 ã¤ã®ãªã½ã¼ã¹åã ããå¿ è¦ãªå ´åã¯ãäºåæ¥ç¶ã¯ 1 åã ãã§æ¸ã¿ã¾ãã
ãã®å¾ããµã¼ãã¼ã¯æçµçãªã¬ã¹ãã³ã¹ãéä¿¡ãã¾ãã
ããã«ã¯ãå¥ãªãªã¸ã³ã®ãã©ã³ãã®å
èªã¿ã¨ã追å ã®ãªãªã¸ã³ããèªã¿è¾¼ã¾ãã <img> ãå«ã¾ãã¾ãã
200 OK
Content-Type: text/html
<!doctype html>
...
<link rel="preload" href="https://cdn.example.com/fonts/my-font.woff2" as="font" type="font/woff2" crossorigin>
...
<img src="https://cdn.example.com/images/image.jpg" alt="">
...
äºåèªã¿è¾¼ã¿ã®ä¾
次㮠103 æ©æãã³ãã¬ã¹ãã³ã¹ã¯ãæçµã¬ã¹ãã³ã¹ã§ãã®ã¹ã¿ã¤ã«ã·ã¼ã style.css ãå¿
è¦ã«ãªãå¯è½æ§ããããã¨ã示ãã¦ãã¾ãã
103 Early Hint
Link: </style.css>; rel=preload; as=style
ãã®å¾ããµã¼ãã¼ã¯æçµçãªã¬ã¹ãã³ã¹ãéä¿¡ãã¾ãã ãã®ã¬ã¹ãã³ã¹ã«ã¯ããã®ã¹ã¿ã¤ã«ã·ã¼ãã¸ã®ãªã³ã¯ãå«ã¾ãã¾ãããã®ãªã³ã¯ã¯ãåæãã³ããããã§ã«äºåèªã¿è¾¼ã¿ããã¦ããå¯è½æ§ãããã¾ãã
200 OK
Content-Type: text/html
<!doctype html>
...
<link rel="stylesheet" rel="preload" href="style.css" />
...
CSP ã¤ãã®æ©æãã³ãã¬ã¹ãã³ã¹
次ã®ä¾ã¯ãåãæ©æãã³ãã¬ã¹ãã³ã¹ã示ãã¦ãã¾ãããContent-Security-Policyãããã¼ãå«ã¾ãã¾ãã
103 Early Hint
Content-Security-Policy: style-src: self;
Link: </style.css>; rel=preload; as=style
æ©æã¬ã¹ãã³ã¹ã«ããããªã¯ã¨ã¹ãã¨åããªãªã¸ã³ã«äºåèªã¿è¾¼ã¿ãå¶éããã¾ãã ãªãªã¸ã³ãä¸è´ããã°ããã®ã¹ã¿ã¤ã«ã·ã¼ãã¯äºåèªã¿è¾¼ã¿ããã¾ãã
æçµçãªã¬ã¹ãã³ã¹ã¯ãä¸è¨ã®ããã« CSP ã none ã«è¨å®ããããããã¾ããã
ãã®ã¹ã¿ã¤ã«ã·ã¼ãã¯äºåèªã¿è¾¼ã¿ããã¦ãã¾ããããã¼ã¸ã®ã¬ã³ããªã³ã°æã«ã¯ä½¿ç¨ããã¾ããã
200 OK
Content-Security-Policy: style-src: none;
Content-Type: text/html
<!doctype html>
...
<link rel="stylesheet" rel="preload" href="style.css" />
...
仿§æ¸
| 仿§æ¸ |
|---|
| An HTTP Status Code for Indicating Hints > # early-hints > |
| HTML > # early-hints > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
Link- ãªãªã¸ã³éãªã½ã¼ã¹å ±æ (CORS)
- ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ã¼ (CSP)
rel="preconnect"ï¼<link>ã®å±æ§ï¼rel="preload"ï¼<link>ã®å±æ§ï¼fetchpriorityï¼<link>ã®å±æ§ï¼- Early Hints update: How Cloudflare, Google, and Shopify are working together to build a faster Internet for everyone ï¼Cloudflare ã®ããã°ããï¼