Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

CSPViolationReport: lineNumber-Eigenschaft

Baseline 2026
Neu verfügbar

Seit March 2026 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Die lineNumber-Eigenschaft des CSPViolationReport-Dictionaries gibt die Zeilennummer in der Quelldatei an, in der der Verstoß gegen die Content Security Policy (CSP) ausgelöst wurde.

Diese Eigenschaft wird zusammen mit den Eigenschaften CSPViolationReport.sourceFile und CSPViolationReport.columnNumber verwendet, die zusammen den genauen Ort in der Quelle angeben, der den Verstoß verursacht hat.

Beachten Sie, dass der Browser den Wert aus dem globalen Objekt der Datei extrahiert, die den Verstoß ausgelöst hat. Wenn die Ressource, die den CSP-Verstoß auslöst, nicht geladen wird, ist der Wert null. Weitere Informationen finden Sie unter CSPViolationReport.sourceFile.

Wert

Ein ganzzahliger Wert, der die Zeilennummer enthält, die den Verstoß ausgelöst hat, oder null.

Beispiele

CSP-Verstoß eines Inline-Scripts

Dieses Beispiel löst einen CSP-Verstoß durch ein Inline-Skript aus und meldet den Verstoß mithilfe eines ReportingObserver.

HTML

Die HTML-Datei unten verwendet das <meta>-Element, um Content-Security-Policy default-src auf self zu setzen, was das Laden von Skripts und anderen Ressourcen aus demselben Ursprung erlaubt, aber nicht das Ausführen von Inline-Skripts zulässt. Das Dokument enthält zudem ein Inline-Skript, das somit einen CSP-Verstoß auslösen sollte.

html
<!doctype html>
<html lang="en">
  <head>
    <meta
      http-equiv="Content-Security-Policy"
      content="default-src 'self'; report-to csp-endpoint" />
    <meta
      http-equiv="Reporting-Endpoints"
      content="csp-endpoint='https://example.com/csp-reports'" />
    <script src="main.js"></script>
    <title>CSP: Violation due to inline script</title>
  </head>
  <body>
    <h1>CSP: Violation due to inline script</h1>
    <script>
      const int = 4;
    </script>
  </body>
</html>

JavaScript (main.js)

Das oben genannte Dokument lädt auch das externe Skript main.js, das unten gezeigt wird. Da dies vom selben Domain wie das HTML geladen wird, wird es nicht von der CSP blockiert.

Das Skript erstellt einen neuen ReportingObserver, um Berichte über Inhaltsverstöße des Typs "csp-violation" zu beobachten. Jedes Mal, wenn die Callback-Funktion aufgerufen wird, erhalten wir den Körper des ersten Eintrags des Berichtsarrays und verwenden ihn, um die Datei, die Zeile und die Spalte des Verstoßes in der Konsole zu protokollieren.

js
// main.js
const observer = new ReportingObserver(
  (reports, observer) => {
    const cspViolationBody = reports[0].body;
    console.log(`sourceFile: ${cspViolationBody.sourceFile}`);
    console.log(`lineNumber: ${cspViolationBody.lineNumber}`);
    console.log(`columnNumber: ${cspViolationBody.columnNumber}`);
  },
  {
    types: ["csp-violation"],
    buffered: true,
  },
);

observer.observe();

Beachten Sie, dass, obwohl es mehrere Berichte im zurückgegebenen Array geben könnte, wir aus Gründen der Kürze nur die Werte des ersten Elements protokollieren.

Ergebnisse

Sie können dies mit einem lokalen Server ausprobieren. Kopieren Sie den obigen Code in test/index.html und test/main.js und starten Sie den Server im Stammverzeichnis. Angenommen, die Adresse des lokalen Servers ist http://127.0.0.1:9999, können Sie dann die HTML-Datei von http://127.0.0.1:9999/test/ (oder http://127.0.0.1:9999/test/index.html) laden.

Mit der obigen Einrichtung ist die Ausgabe des Logs in Chrome:

sourceFile: http://127.0.0.1:9999/test/
lineNumber: 15
columnNumber: 0

Das Ergebnis ist ähnlich für Firefox:

sourceFile: http://127.0.0.1:9999/test/
lineNumber: 15
columnNumber: 13

Beachten Sie, dass die Spaltennummer in den beiden Browsern unterschiedlich ist. Chrome scheint immer 0 zu berichten. Der Wert in Firefox gibt die Position des ersten Zeichens nach dem Ende des öffnenden <script>-Elements an.

Spezifikationen

Spezifikation
Content Security Policy Level 3
# reporting

Browser-Kompatibilität

Siehe auch