javascript - 需要在 navigator.sendbeacon() 中授权

标签 javascript angular typescript

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

这里是我的实际代码:

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

目前,请求发送 401:unhautorized,这是正常的,因为我没有传输任何承载。

最佳答案

我找到了这个解决方案:

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

显然,如果我们必须使用 token 连接,则不能使用 navigator.sendbeacon() https://w3c.github.io/beacon/#sec-sendBeacon-method 它适用于几乎所有情况,但当我关闭包含我的页面的 iframe 时则无效。

关于javascript - 需要在 navigator.sendbeacon() 中授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131973/

相关文章:

带有 x-www-form-urlencoded 数据的 Angular 6 http post 请求

angular - @Input未从父组件接收数据

javascript - 如何使 JSON.stringify 仅序列化 TypeScript getter?

visual-studio-2013 - 使用 Visual Studio 使用 TypeScript 构建 HTA(或单页本地 HTML 文件应用程序)

javascript - 从多对象中获取值

javascript - JS - 在播放音乐时更改样式

angular - 元素包含不起作用(Angular 2+,RxJS)

javascript - 有什么方法可以将 Node 项目转换为 Deno?

javascript - 通过单击 AngularJS 中的按钮打开信息窗口

javascript - react 路由器: Link changes url but doesn't load component