20180528 追記
Chrome devに来たので試した
asnokaze.hatenablog.com
20180301 追記
結構代わりました
NELヘッダは、json形式で表現するようになりました。また、report APIに準拠する形になりました
NEL: {"report-to": "network-errors", "max-age": 2592000}
report-to: { "url": "https://asnokaze.com/report", "group": "network-errors", "max-age": 10886400 }Webアプリケーションの特性を測定することは非常に大切だが、DNSによる名前解決・接続のタイムアウト・接続のリセットといったユーザ側による読み込み失敗などを知るすべはありません。
Network Error Loggingでは、ユーザエージェントにネットワークエラーをレポートする仕組みを定義することでそのような問題を解決する。
Network Error Logging
現在W3Cでは仕様策定がすすんでおり、現在 Draft 05(http://www.w3.org/TR/2015/WD-network-error-logging-20150305/)となっている。
NELヘッダ
以下の様に、HTTPレスポンスのNELヘッダによってユーザエージェントに通知されます。
HTTP/1.1 200 OK ... NEL: report-uri="/report"; max-age=2592000
このNELヘッダはTLS(証明書エラーなど無い)を使用された信頼できるオリジンである必要がある。
レポート形式
{
"nel-report": [
{
"uri": "https://widget.com/thing.js",
"referrer": "https://www.example.com/",
"server-ip": "234.233.232.231",
"protocol": "",
"status-code": 0,
"elapsed-time": 143,
"age": 0,
"type": "http.dns.name_not_resolved"
}
]
}ぱっと見でだいたいわかるが
ネットワークエラーの種類
ネットワークエラーの種類は多く定義されている。
おおむね以下のエラーが定義されているが、それぞれより細かくエラーが定義されているので(証明書エラー等)、詳しく知りたい場合は仕様を確認ください。
プライバシー
DraftはGithub上で管理されており、プライバシーに関するコミットが加わっている。
https://w3c.github.io/network-error-logging/#privacy-considerations