0

我们正在尝试构建一个显示下载 XML 文件的按钮的网页。该文件是通过向 REST 端点发出请求来检索的,该端点需要 auth 标头中的承载令牌。

我们制作了一个带有 onclick 功能的按钮,如下所示:

var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer <bearer token here>")

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
};

fetch('<url>', requestOptions)
  .then(resp => resp.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.style.display = 'none';
    a.href = url;
    // the filename
    a.download = 'todo-1.json';
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    alert('your file has downloaded!');
  })
  .catch(() => alert('Error')); 

以上代码参考

这似乎在大多数浏览器中运行良好,但是,在 Edge 上,此下载被 Microsoft Defender SmartScreen 阻止,因为它与用户手势无关。

我们如何启动与带有 auth 标头的用户手势相关的文件下载请求?

我们知道我们可以更改身份验证机制,以便它接受来自 cookie 或请求正文的身份验证令牌,但我们不想这样做。

4

0 回答 0