NEL
응답 헤더 Security

개요

NEL(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_subdomainstrue면 하위 도메인에도 이 정책을 적용.
success_fraction / failure_fraction성공/실패 요청 중 리포트를 샘플링할 비율(0.0~1.0). 실패는 보통 1.0, 성공은 낮게.

실무 참고

관련 헤더

관련 상태코드

스펙 근거