Ich habe versucht, Servicemitarbeiter für (wie es scheint Stunden und Stunden) zu verwenden, um allen Anfragen einen einfachen Header hinzuzufügen. Was frustrierend ist, es funktioniert irgendwie.
Versuch 1:
self.addEventListener("fetch", event => {
const modifiedHeaders = new Headers({
...event.request.headers,
'API-Key': '000000000000000000001'
});
const modifiedRequest = new Request(event.request, {
headers: modifiedHeaders,
});
event.respondWith((async () => {
return fetch(modifiedRequest);
})());
});
Der obige Code funktioniert für HTML-Dateien, aber für CSS- und JS-Dateien wird der folgende Fehler angezeigt
ReferenceError: Header sind nicht definiert
Wenn ich die Header-Anforderung deaktiviere, wird die Seite mit Bildern und Javascript geladen und ich kann wie gewohnt damit interagieren.
Versuch 2:
var req = new Request(event.request.url, {
headers: {
...event.request.headers,
'API-Key': '000000000000000000001'
},
method: event.request.method,
mode: event.request.mode,
credentials: event.request.credentials,
redirect: event.request.redirect,
referrer: event.request.referrer,
referrerPolicy: event.request.referrerPolicy,
bodyUsed: event.request.bodyUsed,
cache: event.request.cache,
destination: event.request.destination,
integrity: event.request.integrity,
isHistoryNavigation: event.request.isHistoryNavigation,
keepalive: event.request.keepalive
});
Bei diesem Versuch habe ich einfach eine neue Anforderung erstellt, die den neuen Header für CSS- und JS-Dateianforderungen erfolgreich enthielt. Wenn ich jedoch einen POST oder eine Umleitung mache, funktionieren die Dinge nicht mehr und verhalten sich seltsam.
Was ist der richtige Ansatz dafür? Ich bin der Meinung, dass Versuch 1 der bessere Pfad ist, aber ich kann das Headers-Objekt auf der Anfrage nicht erstellen, egal was ich tue.
Die Version von Chrom, die ich benutze, ist
Version 78.0.3904.70 (Official Build) (64-Bit)
Die Site ist ein internes Entwicklertool, sodass keine browserübergreifende Kompatibilität erforderlich ist. Daher lade ich gerne zusätzliche Bibliotheken / aktiviere experimentelle Funktionen usw.