NELNEL(Network Error Logging)은 브라우저가 특정 오리진에 대한 네트워크 수준의 요청 성공·실패(DNS 실패·TCP 리셋·TLS 오류·프로토콜 오류 등)를 관찰해 리포트로 서버에 보고하게 하는 헤더입니다. 서버 로그에 남지 않는 '연결조차 못 한' 실패까지 클라이언트 관점에서 수집합니다.
값은 JSON 객체로 report_to(리포트 그룹 이름)·max_age(정책 수명)·include_subdomains·success_fraction·failure_fraction을 담습니다. report_to가 가리키는 그룹은 Reporting-Endpoints(또는 구식 Report-To) 헤더에 정의돼 있어야 하며, 그 엔드포인트로 network-error 타입 리포트가 전송됩니다.
NEL의 진가는 서버가 결코 볼 수 없는 실패를 잡는 데 있습니다. 사용자의 DNS가 깨지거나, 중간 네트워크가 TCP를 리셋하거나, TLS 핸드셰이크가 실패하면 요청이 서버에 도달조차 못 해 서버 로그가 비어 있습니다. NEL은 이런 사건을 브라우저가 기록해 나중에(연결이 회복되면) 리포트로 보내므로, CDN·엣지 장애나 특정 지역 네트워크 문제를 원격으로 진단할 수 있습니다.
success_fraction은 정상 요청 중 표본만 수집하도록 낮게(예: 0.01) 두고, failure_fraction은 실패를 놓치지 않도록 1.0으로 두는 구성이 일반적입니다. 리포트에는 요청 URL·상태·오류 타입·서버 IP·프로토콜 등이 담겨 프라이버시 민감도가 있으므로 수집·보관 정책을 신중히 설계해야 합니다.
NEL: { "report_to": "<group>", "max_age": <seconds>, "include_subdomains": <bool>, "failure_fraction": <0..1> }e.g. NEL: {"report_to":"default","max_age":2592000,"include_subdomains":true,"failure_fraction":1.0}
report_to | 네트워크 오류 리포트를 보낼 Reporting-Endpoints/Report-To 그룹 이름. |
max_age | 이 NEL 정책을 브라우저가 유지할 초 단위 수명. |
include_subdomains | true면 하위 도메인에도 이 정책을 적용. |
success_fraction / failure_fraction | 성공/실패 요청 중 리포트를 샘플링할 비율(0.0~1.0). 실패는 보통 1.0, 성공은 낮게. |