首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要在navigator.sendbeacon()中进行授权

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

Stack Overflow用户
提问于 2019-05-14 21:44:33
回答 2查看 3.8K关注 0票数 4

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

下面是我的实际代码:

代码语言:javascript
复制
@HostListener('window:beforeunload', ['$event'])
  onBeforeUnload(): void {
     navigator.sendbeacon(`${localhost:8080/apiRest}`, infoIWantToSent);
  }

现在,请求发送401:unhautorized,这是正常的,因为我不传输任何载体。

EN

回答 2

Stack Overflow用户

发布于 2019-05-16 21:16:42

我找到了这个解决方案:

代码语言:javascript
复制
@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() https://w3c.github.io/beacon/#sec-sendBeacon-method它在几乎所有的情况下都有效,但当我关闭包含我的页面的iframe时就不行。

票数 7
EN

Stack Overflow用户

发布于 2019-05-14 22:01:09

试试这个:

代码语言:javascript
复制
  let headers = {
    Authorization: 'Bearer ' + token
  };
  let blob = new Blob([JSON.stringify(infoIWantToSent)], headers);
  navigator.sendBeacon('url', blob);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56131973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档