| # Using the common report collector |
| |
| To send reports to the collector, configure the reporting API to POST reports |
| to the collector's URL. This can be same- or cross- origin with the reporting |
| document, as the collector will follow the CORS protocol. |
| |
| The collector supports both CSP Level 2 (report-uri) reports as well as |
| Reporting API reports. |
| |
| A GET request can be used to retrieve stored reports for analysis. |
| |
| A POST request can be used to clear reports stored in the server. |
| |
| Sent credentials are stored with the reports, and can be retrieved separately. |
| |
| CORS Notes: |
| * Preflight requests originating from www2.web-platform.test will be rejected. |
| This allows tests to ensure that cross-origin report uploads are not sent when |
| the endpoint does not support CORS. |
| |
| ## Supported GET parameters: |
| `op`: For GET requests, a string indicating the operation to perform (see |
| below for description of supported operations). Defaults to |
| `retrieve_report`. |
| |
| `reportID`: A UUID to associate with the reports sent from this document. This |
| can be used to distinguish between reports from multiple documents, and to |
| provide multiple distinct endpoints for a single document. Either `reportID` |
| or `endpoint` must be provided. |
| |
| `endpoint`: A string which will be used to generate a UUID to be used as the |
| reportID. Either `reportID` or `endpoint` must be provided. |
| |
| `timeout`: The amount of time to wait, in seconds, before responding. Defaults |
| to 0.5s. |
| |
| `min_count`: The minimum number of reports to return with the `retrieve_report` |
| operation. If there have been fewer than this many reports received, then an |
| empty report list will be returned instead. |
| |
| `retain`: If present, reports will remain in the stash after being retrieved. |
| By default, reports are cleared once retrieved. |
| |
| ### Operations: |
| `retrieve_report`: Returns all reports received so far for this reportID, as a |
| JSON-formatted list. If no reports have been received, an empty list will be |
| returned. |
| |
| `retrieve_cookies`: Returns the cookies sent with the most recent reports for |
| this reportID, as a JSON-formatted object. |
| |
| `retrieve_count`: Returns the number of POST requests for reports with this |
| reportID so far. |
| |
| ## Supported POST JSON payload: |
| |
| `op`: For POST requests, a string indicating the operation to perform (see |
| below for description of supported operations). |
| |
| `reportIDs`: A list of `reportID`s, each one a UUID associated with reports stored in the server stash. |
| |
| ### Operations |
| `DELETE`: Clear all reports associated with `reportID` listed in `reportIDs` list. |
| |
| ### Example usage: |
| ``` |
| # Clear reports on the server. |
| fetch('/reporting/resources/report.py', { |
| method: "POST", |
| body: JSON.stringify({ |
| op: "DELETE", |
| reportIDs: [...] # a list of reportID |
| }) |
| }); |
| ``` |