javascript - Behöver auktorisering i en navigator.sendbeacon()


Mitt problem är att när jag anropar en funktion som lyssnar på händelsen onBeforeUnload(), vill jag skicka data. Problemet är att min förfrågan är obehörig. Jag behöver lägga till min bearer någonstans, men jag vet inte hur.

Här är min faktiska kod:

@HostListener('window:beforeunload', ['$event'])
  onBeforeUnload(): void {
     navigator.sendbeacon(`${localhost:8080/apiRest}`, infoIWantToSent);
  }

Just nu skickar förfrågan en 401:unauthorized, vilket är normalt, eftersom jag inte överför någon bearer.

Svar #1

Jag hittar denna lösning :

@HostListener('window:beforeunload', ['$event'])
  onBeforeUnload(): void {
   fetch('url', {
        keepalive: true,
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${token}`,
        },
        body: JSON.stringify(infoIWantToSent),
      });
}

Tydligen, om vi måste använda en token-anslutning, kan vi inte använda navigator.sendBeacon() https://w3c.github.io/beacon/#sec-sendBeacon-method Det fungerar för nästan alla fall, men inte när jag stänger en iframe som innehåller min sida.

Relaterade artiklar