.. | ||
DIR_METADATA | ||
mock_persistent_nel_store_unittest.cc | ||
mock_persistent_nel_store.cc | ||
mock_persistent_nel_store.h | ||
network_error_logging_service_unittest.cc | ||
network_error_logging_service.cc | ||
network_error_logging_service.h | ||
network_error_logging_test_util.cc | ||
network_error_logging_test_util.h | ||
OWNERS | ||
persistent_reporting_and_nel_store.h | ||
README.md |
Network Error Logging (NEL)
Network Error Logging (NEL) provides out-of-band reporting of network errors
via the Reporting API (see //net/reporting
). Site operators can specify a
NEL policy that defines the Reporting endpoint(s) on which they wish to receive
reports about client-side errors encountered while connecting to the site. The
draft spec can be found here.
This directory contains the core implementation of NEL.
Implementation overview
Most of the action takes place in
NetworkErrorLoggingService
,
which handles receiving/processing NEL:
response headers and
generating/queueing reports about network requests. The
NetworkErrorLoggingService
is owned by the URLRequestContext
.
Information about network requests comes directly from
HttpNetworkTransaction
,
which informs NetworkErrorLoggingService
of the details of the request such
as the remote IP address and outcome (a net::Error
code).
The NetworkErrorLoggingService
finds a NEL policy applicable to the request
(previously set by a NEL
header), and if one exists, potentially queues a
NEL report to be uploaded out-of-band to the policy's specified Reporting
endpoint via the
ReportingService
.
Received NEL policies are persisted to disk by a PersistentNelStore
, whose
main implementation is the
SqlitePersistentReportingAndNelStore
.