angularjs - 将授权 header 添加到单击的链接

标签 angularjs bearer-token

我是 Angular 的新手并继承了旧版本,所以请耐心等待。

我的 Angular 1.5.7 应用程序需要从受不记名 token 身份验证保护的 API 服务器获取文件 https://somedomain.com/api/doc/somefile.pdf .所以我需要设置一个这样的标题:Authorization: Bearer xxxxxxxxxxxx .

我试图用 Postman 请求文件并设置标题 Authorization: Bearer xxxxxxxxxxxx这有效。

在 Angular 1.5.7 中,我在 view.html 中有一个这样的链接 <a href="{{url}}" ng-show="url" target="_blank"> PDF</a>哪里{{url}} = https://somedomain.com/api/doc/somefile.pdf .

问题是我不知道如何向链接添加标题。我认为这是不可能的。我必须做一个这样的链接:<a>PDF</a>当点击 Angular 接管时,打开一个新窗口并在那里加载文件。

我已经查看了这些可能解决我的问题的堆栈溢出问题,但老实说我不知道​​如何实现解决方案:

  • Add HTTP Header in JavaScript to requests for images
  • Set HTTP header for one request

  • 更新

    我的解决方案是使用下面的代码制作指令。它起作用是因为当单击链接时,当前窗口已经设置了授权 header ,因此授予了对该文件的访问权限。
    <a href="https://somedomain.com/api/doc/somefile.pdf" ng-click="openPdf($event)">PDF</a>
    
    function openPdf($event) {
        // Prevent default behavior when clicking a link
        $event.preventDefault();
    
        // Get filename from href
        var filename = $event.target.href;
    
        $http.get(filename, {responseType: 'arraybuffer'})
        .success(function (data) {
            var file = new Blob([data], {type: 'application/pdf'});
            var fileURL = URL.createObjectURL(file);
    
            // Open new windows and show PDF
            window.open(fileURL);
        });
    }
    

    最佳答案

    你不能使用拦截器。单击的链接将由浏览器请求处理,而不是由系统处理。您需要将单击事件处理程序(使用 event.preventDefault() 方法)附加到此链接并使用您自己的函数发送 get 请求。这将向请求添加 header

    关于angularjs - 将授权 header 添加到单击的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51379350/

    相关文章:

    angularjs - 如何防止动画在最初隐藏的元素上运行?

    javascript - 使用 x-editable 使不同的元素在单击时可编辑

    authentication - NET Core 2.0中缺少IServiceCollection的扩展方法AddJwtBearerAuthentication()

    rest - 为什么我们更喜欢 Authorization Header 向服务器发送承载 token 而不是 URL 编码等其他技术

    authentication - ASP.NET 核心 1.0。 Bearer Token,无法访问自定义声明

    c# - 在 Web API 中解密不记名 token

    键盘消失时的Android白色背景

    javascript - Angular js 返回错误未知提供者 :

    api - 使用不记名 token 进行身份验证(≠授权)

    javascript - 没有 jquery 无法正确加载外部脚本