ãããã¯ã¼ã¯ã¨ã©ã¼ãã°è¨é² (NEL)
Experimental: ããã¯å®é¨çãªæ©è½ã§ãã
æ¬çªã§ä½¿ç¨ããåã«ãã©ã¦ã¶ã¼äºææ§ä¸è¦§è¡¨ããã§ãã¯ãã¦ãã ããã
ãããã¯ã¼ã¯ã¨ã©ã¼ãã°è¨é²ã¯ãHTTP ã® NEL ã¬ã¹ãã³ã¹ãããã¼ã使ã£ã¦è¨å®ã§ããæ©æ§ã§ãããã®å®é¨çãªãããã¼ã«ãããã¦ã§ããµã¤ããã¢ããªã±ã¼ã·ã§ã³ã¯ã対å¿ãã¦ãããã©ã¦ã¶ã¼ããã失æããï¼å¿
è¦ã§ããã°æåããï¼ãããã¯ã¼ã¯èªã¿åãã«é¢ããã¬ãã¼ããåãåããã¨ã鏿ãããã¨ãã§ãã¾ãã
ã¬ãã¼ãã¯ã Report-To ãããã¼ã§å®ç¾©ãããå ±åã°ã«ã¼ãã«éä¿¡ããã¾ãã
ä½¿ç¨æ¹æ³
ã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ã¯ã JSON ã¨ã³ã³ã¼ãããããªãã¸ã§ã¯ãã§ãã NEL ãããã¼ã使ã£ã¦ããã®åä½ã鏿ãã¾ãã
NEL: { "report_to": "nel",
"max_age": 31556952 }
ãã©ã¦ã¶ã¼ããå®å ¨ã¨èªèããããªãªã¸ã³ãå¿ è¦ã§ãã
以ä¸ã®ãªãã¸ã§ã¯ããã¼ã NEL ãããã¼ã§æå®ããã¦ãã¾ãã
- report_to
-
ãããã¯ã¼ã¯ã¨ã©ã¼ã¬ãã¼ãã®éä¿¡å ã¨ãªã ã¬ãã¼ã API ã°ã«ã¼ãã§ãã
- max_age
-
ããªã·ã¼ã®æå¹æéãç§åä½ã§æå®ãã¾ãï¼HSTS ããªã·ã¼ãæéå¶éããã¦ããã®ã¨åæ§ã®æ¹æ³ã§ãï¼ãåç §ãããå ±åã°ã«ã¼ãã¯ãå°ãªãã¨ã NEL ããªã·ã¼ã¨åç¨åº¦ã®æå¹æéãæã¤å¿ è¦ãããã¾ãã
- include_subdomains
-
true ã®å ´åãããªã·ã¼ã¯ãããªã·ã¼ãããã¼ãè¨å®ããã¦ãããªãªã¸ã³ã®ä¸ã®ãã¹ã¦ã®ãµããã¡ã¤ã³ã«é©ç¨ããã¾ãããã®ãªãã·ã§ã³ãæå¹ã«ããå ´åã¯ããµããã¡ã¤ã³ãå«ããããã«å ±åã°ã«ã¼ããè¨å®ããå¿ è¦ãããã¾ãã
- success_fraction
-
0 㨠1 ã®éã®æµ®åå°æ°ç¹å¤ã§ãå ±åãããããã¯ã¼ã¯è¦æ±ãæåããå²åãæå®ãã¾ããæ¢å®å¤ã¯ 0 ã§ãJSON ãã¤ãã¼ãã«ãã¼ãåå¨ããªãå ´åãæåãããããã¯ã¼ã¯ãªã¯ã¨ã¹ãã¯å ±åããã¾ããã
- failure_fraction
-
0 㨠1 ã®éã®æµ®åå°æ°ç¹å¤ã§ãå ±åãã失æãããããã¯ã¼ã¯ãªã¯ã¨ã¹ãã®å²åãæå®ãã¾ããæ¢å®å¤ã¯ 1 ã§ãJSON ãã¤ãã¼ãã«ãã¼ãåå¨ããªãå ´åã失æãããã¹ã¦ã®ãããã¯ã¼ã¯ãªã¯ã¨ã¹ããå ±åããã¾ãã
ä¸è¨ã®ã¬ãã¼ãã°ã«ã¼ãã¯ã Report-To ãããã¼å
ã§éå¸¸ã®æ¹æ³ã§å®ç¾©ããã¾ããä¾ãã°ä¸è¨ã®ããã«ãªãã¾ãã
Report-To: { "group": "nel",
"max_age": 31556952,
"endpoints": [
{ "url": "https://example.com/csp-reports" }
]
}
ã¨ã©ã¼ã¬ãã¼ã
ãããã®ä¾ã§ã¯ãReporting API ã®ã³ã³ãã³ãå
¨ä½ã示ãã¦ãã¾ããæä¸ä½ã® "body" ãã¼ã«ã¯ããããã¯ã¼ã¯ã¨ã©ã¼ã¬ãã¼ããå«ã¾ãã¦ãã¾ãã
HTTP 400 (Bad Request) response
{
"age": 20,
"type": "network-error",
"url": "https://example.com/previous-page",
"body": {
"elapsed_time": 338,
"method": "POST",
"phase": "application",
"protocol": "http/1.1",
"referrer": "https://example.com/previous-page",
"sampling_fraction": 1,
"server_ip": "192.0.2.172",
"status_code": 400,
"type": "http.error",
"url": "https://example.com/bad-request"
}
}
DNS åãæªè§£æ±º
ãªãããã®ã¬ãã¼ãã§ã¯ãã§ã¼ãºã dns ã«è¨å®ããã¦ãããå«ãããã¨ã®ã§ãã server_ip ã¯ããã¾ããã
{
"age": 20,
"type": "network-error",
"url": "https://example.com/previous-page",
"body": {
"elapsed_time": 18,
"method": "POST",
"phase": "dns",
"protocol": "http/1.1",
"referrer": "https://example.com/previous-page",
"sampling_fraction": 1,
"server_ip": "",
"status_code": 0,
"type": "dns.name_not_resolved",
"url": "https://example-host.com/"
}
}
ãããã¯ã¼ã¯ã¨ã©ã¼ã®ç¨®é¡ã¯ã仿§ã§å®ç¾©ããã以ä¸ã®å¤ã®ããããã§ããããã©ã¦ã¶ã¼ã¯ç¬èªã®ã¨ã©ã¼ç¨®å¥ã追å ãã¦éä¿¡ãããã¨ãã§ãã¾ãã
dns.unreachable-
ã¦ã¼ã¶ã¼ã® DNS ãµã¼ãã¼ã«å°éã§ããªã
dns.name_not_resolved-
ã¦ã¼ã¶ã¼ã® DNS ãµã¼ãã¼ã¯å¿çãããããªã¯ã¨ã¹ãããã URI ã® IP ã¢ãã¬ã¹ã«è§£æ±ºã§ããªãã£ãã
dns.failed-
DNS ãµã¼ãã¼ã¸ã®ãªã¯ã¨ã¹ããã以åã®ã¨ã©ã¼ (SERVFAIL ãªã©) ã§ã«ãã¼ãããªãçç±ã§å¤±æãã
dns.address_changed-
ã»ãã¥ãªãã£ä¸ã®çç±ããããªãªã¸ãã«ã®ã¬ãã¼ããé ä¿¡ãããµã¼ãã¼ã® IP ã¢ãã¬ã¹ããã¨ã©ã¼çºçæã®ç¾å¨ã®ãµã¼ãã¼ã® IP ã¢ãã¬ã¹ã¨ç°ãªãå ´åãã¬ãã¼ããã¼ã¿ã¯ãã®åé¡ã«é¢ããæ å ±ã®ã¿ãå«ãããã«ãã¦ã³ã°ã¬ã¼ããããã¿ã¤ãã¯
dns.address_changedã«è¨å®ããã¾ãã tcp.timed_out-
ãµã¼ãã¼ã¸ã® TCP ã³ãã¯ã·ã§ã³ãã¿ã¤ã ã¢ã¦ããã
tcp.closed-
TCP ã³ãã¯ã·ã§ã³ããµã¼ãã¼ããéãããã
tcp.reset-
TCP ã³ãã¯ã·ã§ã³ããªã»ããããã
tcp.refused-
TCP ã³ãã¯ã·ã§ã³ããµã¼ãã¼ããæå¦ããã
tcp.aborted-
TCP ã³ãã¯ã·ã§ã³ã䏿¢ããã
tcp.address_invalid-
IP ã¢ãã¬ã¹ãç¡å¹ã§ãã
tcp.address_unreachable-
IP ã¢ãã¬ã¹ã«å°éã§ããªã
tcp.failed-
TCP ã³ãã¯ã·ã§ã³ãç´åã®ã¨ã©ã¼ã«ãã£ã¦ã«ãã¼ã§ããªãåå ã§å¤±æãã
http.error-
ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããã¬ã¹ãã³ã¹ã®åä¿¡ã«æåãããã 4xx ã¾ã㯠5xx ã®ã¹ãã¼ã¿ã¹ã³ã¼ãã§ãã£ã
http.protocol.error-
ã³ãã¯ã·ã§ã³ã HTTP ãããã³ã«ã¨ã©ã¼ã®ããã«ä¸æ¢ããã
http.response.invalid-
ã¬ã¹ãã³ã¹ã空ã§ãããã content-length ãåã£ã¦ããªãããã¨ã³ã³ã¼ãã£ã³ã°ãæ£ãããªããããã®ä»ã®ç¶æ³ã§ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããã¬ã¹ãã³ã¹ãå¦çã§ããªãã£ã
http.response.redirect_loop-
ãªã¯ã¨ã¹ãã¯ãªãã¤ã¬ã¯ãã«ã¼ããæ¤åºããããã䏿¢ããã
http.failed-
ã³ãã¯ã·ã§ã³ã¯ç´åã®ã¨ã©ã¼ã§ã«ãã¼ãããªãã£ã HTTP ãããã³ã«ã®ã¨ã©ã¼ã§å¤±æãã
仿§æ¸
| 仿§æ¸ |
|---|
| Network Error Logging > # nel-response-header > |