Start · Sprachen · JavaScript · Referenz · WorkerLocation.protocol

WorkerLocation.protocol

Eigenschaft

Gibt das Protokoll der Skript-URL des Workers als String zurück, einschließlich des abschließenden Doppelpunkts, z. B. <code>"https:"</code>.

seit JavaScript Baseline: alle modernen Browser (Web Worker, Share Kategorie: webapi

Signatur

WorkerLocation.protocol

Beschreibung

Die schreibgeschützte Eigenschaft protocol des WorkerLocation-Objekts liefert das Schema der URL, von der das Worker-Skript geladen wurde, also etwa "https:", "http:", "blob:" oder "data:". Der abschließende Doppelpunkt ist immer enthalten. Auf das Objekt greift man innerhalb eines Workers über self.location bzw. einfach location zu.

Nützlich ist die Eigenschaft, wenn ein Worker sein Verhalten an die Ausführungsumgebung anpassen soll: etwa um WebSocket-URLs passend zu bilden (wss: statt ws: bei HTTPS), um Worker zu erkennen, die aus einer Blob-URL erzeugt wurden, oder um bei unsicherem Ursprung Warnungen zu protokollieren.

Anders als window.location.protocol lässt sich WorkerLocation.protocol nicht setzen. Ein Worker kann also nicht über seine Location zu einer anderen URL navigieren. Der Wert entspricht dem von new URL(self.location.href).protocol.

Rückgabewert

Typ
string
Beschreibung
Das URL-Schema des Worker-Skripts, kleingeschrieben und einschließlich des abschließenden :, z. B. "https:" oder "blob:".

Beispiele

Protokoll im Worker ausgeben

// worker.js
console.log(self.location.protocol);

// main.js (Seite läuft unter https://example.com)
const worker = new Worker('/worker.js');
https:

Passende WebSocket-URL im Worker bilden

// worker.js
const wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
const socket = new WebSocket(`${wsProtocol}//${location.host}/live`);

socket.addEventListener('message', (event) => {
  self.postMessage(event.data);
});

console.log(`Verbinde mit ${wsProtocol}//${location.host}/live`);
Verbinde mit wss://example.com/live

Blob-Worker erkennen

// main.js
const code = `
  self.postMessage({
    protocol: location.protocol,
    istBlob: location.protocol === 'blob:'
  });
`;
const url = URL.createObjectURL(new Blob([code], { type: 'text/javascript' }));
const worker = new Worker(url);

worker.onmessage = ({ data }) => {
  console.log(data);
  URL.revokeObjectURL(url);
  worker.terminate();
};
{ protocol: 'blob:', istBlob: true }

// Wichtig · Fallstricke

  • Der Wert enthält immer den Doppelpunkt: Vergleiche also mit 'https:', nicht mit 'https'.
  • Die Eigenschaft ist schreibgeschützt; eine Zuweisung wird ignoriert (im Strict Mode ggf. TypeError).
  • Bei Blob- oder Data-URL-Workern liefert protocol "blob:" bzw. "data:" – daraus lässt sich nicht auf das Protokoll der einbettenden Seite schließen. Für Sicherheitsprüfungen besser self.isSecureContext verwenden.
  • Service Worker laufen nur in sicheren Kontexten, dort ist der Wert praktisch immer "https:" (außer bei http://localhost).
  • Nur innerhalb von Worker-Kontexten verfügbar; im Hauptthread heißt das Gegenstück window.location.protocol. Unterstützt in allen modernen Browsern.