Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要在navigator.sendbeacon()中进行授权_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 需要在navigator.sendbeacon()中进行授权

Javascript 需要在navigator.sendbeacon()中进行授权,javascript,angular,typescript,Javascript,Angular,Typescript,我的问题是,当我调用侦听onBeforeUnload()事件的函数时,我想发布数据。问题是我的请求未经授权。我需要在某处添加我的承载者,但我不知道如何添加 这里是我的实际代码: @HostListener('window:beforeunload', ['$event']) onBeforeUnload(): void { navigator.sendbeacon(`${localhost:8080/apiRest}`, infoIWantToSent); } 现在,请求发送

我的问题是,当我调用侦听onBeforeUnload()事件的函数时,我想发布数据。问题是我的请求未经授权。我需要在某处添加我的承载者,但我不知道如何添加

这里是我的实际代码:

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

现在,请求发送一个401:unautomatized,这是正常的,因为我不发送任何承载。

试试这个:

  let headers = {
    Authorization: 'Bearer ' + token
  };
  let blob = new Blob([JSON.stringify(infoIWantToSent)], headers);
  navigator.sendBeacon('url', blob);
我发现这个解决方案:

@HostListener('window:beforeunload', ['$event'])
  onBeforeUnload(): void {
   fetch('url', {
        keepalive: true,
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${token}`,
        },
        body: JSON.stringify(infoIWantToSent),
      });
}
另外,如果必须使用令牌连接,则不能使用navigator.sendbeacon()
它几乎适用于所有情况,但当我关闭包含我的页面的iframe时就不行了。

谢谢您的回复。不幸的是,我在使用您的方法编译时遇到了这个错误:错误TS2559:Type“{Authorization:string;}”与Type“BlobPropertyBag”没有共同的属性。我试图添加一个类型,例如`const headers={type:'application/json',Authorization:'Bearer'+this.getUser().token};```但它也不起作用。我会说它包含了'type:'application/json',,但既然您已经尝试过了,我就没有更多的输入了。很抱歉一旦你破解了,请告诉我解决方案。祝你一切顺利