TransformResponse 标头参数 ($resource) 中缺少自定义响应的标头

2024-06-22

我定义了一个$resource到一个 API 端点,该端点返回包含多个内容的响应headers但在transformResponse https://docs.angularjs.org/api/ngResource/service/%24resource配置函数中大多数标头都丢失了headersGetter函数参数。

我该如何修复它?

API响应头

HTTP/1.1 201 Created
Server: Apache-Coyote/1.1
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
x-frame-options: DENY
Access-Control-Allow-Origin: http://localhost:9000
access-control-allow-methods: POST, PUT, GET, DELETE, OPTIONS
access-control-allow-headers: Content-Type
Access-Control-Allow-Credentials: true
Content-Disposition: attachment; filename="testCall.pcap"
FileName: testCall.pcap
Content-Type: application/pcap

transformResponse的标头

Pragma: no-cache
Content-Type: application/pcap
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: 0

app.factory("MyService", function ($resource, ENV, _) {
    return {
        testCall: $resource(ENV.apiEndpoint + "/test-call", {}, {
            launch: {
                method: 'POST',
                isArray: false,
                headers:{'Accept':'application/octet-stream'},
                responseType: 'blob',
                cache: false,
                transformResponse: function(data, headers){
                    var filename = headers('Content-Disposition'); //headers('FileName')
                    var contentType = headers('Content-Type');

                    var file = new Blob([data], {
                        type: contentType
                    });

                    var fileURL = URL.createObjectURL(file);
                    var a         = document.createElement('a');
                    a.href        = fileURL;
                    a.target      = '_blank';
                    a.download    = filename;
                    document.body.appendChild(a);
                    a.click();
                }
            }
        }),
        searchOptions: $resource(ENV.apiEndpoint + "//search-options")
    };
});

假设您正在进行 CORS 调用,响应标头并未全部公开。服务器端需要在 CORS 过滤器中添加响应标头“Access-Control-Expose-Headers”。

例如要使用 CORS 调用读取名为“X-MY-HEADER1”和“X-MY-HEADER2”的自定义响应标头,服务器添加标头

Access-Control-Expose-Headers: "X-MY-HEADER1, X-MY-HEADER2"

请参阅@nancoder 的回答:https://stackoverflow.com/a/23726352/4684232 https://stackoverflow.com/a/23726352/4684232

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TransformResponse 标头参数 ($resource) 中缺少自定义响应的标头 的相关文章

  • AngularJS RequireJS Browserify 和 Javascript 模块/全局范围噩梦 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近在 CommonJS 与 AMD 的战斗中进行了一些挖掘 这是我的发现 顺便说一句 我不是在这里说教 而是分享我的想法以获得一些建设性的见
  • 使用 angularjs 进行动态 url 路由

    我的代码中有类似的东西 ul p b item name b p 例如 我有 3 件商品 宝马 高尔夫和梅赛德斯 我想要一个包含每个项目名称的 url 例如 bmw 或 mercedes 并且所有 url 使用details html 来显
  • AngularJS - 成功返回 $http.post

    我使用 AngularJs 我需要在 http post 连接后返回数据 这是代码 app controller PrincipalController http scope function http scope scope myData
  • 从 Rest API 响应内容处置输出中下载 javascript 中的 excel 文件 [对象,对象]

    我想从我的 angularJs 代码下载一个 excel 文件 我向 Java Rest API 发出 http post 请求并返回带有标头的文件 Content Disposition 附件 文件名 new excel file xls
  • cookie 未在跨域上设置 - AngularJS 和 NodeJS/Express

    跨域请求时未设置 cookie 我的服务器在 localhost 8000 中运行 客户端在 localhost 9000 中运行 服务器nodejs express上的cors设置是 app use function req res ne
  • 从不同的控制器修改 $rootscope 属性

    在我的 rootscope 中我有一个visible控制 div 可见性的属性 app run function rootScope rootScope visible false HTML 示例 section section
  • Angularjs 中的动态表单名称属性

    当动态创建 inputName 时 人们将如何使用 formName inputName valid
  • AngularJS:如何通过 websocket 发送文件?

    我是 websocket 的新手 我被分配了一个现有的工作聊天模块 目前该模块仅向其他用户发送消息 我被要求集成用户可以互相发送 附件 的功能 供参考 我发现了这个链接 https stackoverflow com questions 1
  • AngularJs:显示来自 git 或 Bower 的版本号

    我创建了一个 Angular 应用程序 我想在屏幕上显示应用程序的当前版本号 目前我已将其实现为常量 application constant constants VERSION 1 1 2 但这需要我在每个新版本上更新常量 我使用 Bow
  • 如何测试 AngularJS 指令

    我正在开发一个将使用 AngularJS 的 Rails 3 2 应用程序 我可以让 Angular 做我需要的事情 但我很难弄清楚如何测试我正在做的事情 我正在使用guard jasmine 使用 PhantomJS 运行 Jasmine
  • 识别 ASP.NET MVC 代码中的 Angular js AJAX 调用

    我正在使用 ASP NET MVC 和 AngularJS 开发一个示例应用程序 在服务器端代码中 我编写了一个Action过滤器属性 其中我需要检查请求是普通请求 浏览器 还是AJAX请求 public override void OnA
  • 更改 Angular 模型以更新 Kendo

    我一直在一个项目中使用 Angular 最近才发现 Kendo Angular 项目位于http kendo labs github io angular kendo http kendo labs github io angular ke
  • AngularJS Youtube 播放器嵌入非常大的播放列表

    我目前正在构建一个 AngularJS 应用程序 我知道它有点过时 但我对它很有信心 我的应用程序需要嵌入一个 YouTube 播放器 其中包含一个非常大的播放列表 大约 1500 个项目 但我无法对其进行编码 以便它实际上可以嵌入超过 2
  • 为什么使用 Angular 的 $log 而不是 console.log?

    我知道这是使用角度的最佳实践 log代替console log 但是 我找不到解释原因的良好文档 开发人员为什么要使用 log log首先检查浏览器是否支持console log 例如 IE 8 就没有 这可以防止在 IE 8 上显示错误
  • 如何在一页/url 上执行 angularjs 多步骤/向导表单

    我试图找出 AngularJS 中合理的方法来创建一个由多个步骤 即向导 组成但链接到一个页面 URL 的函数 来自一个步骤的数据必须将数据发送到下一步 或与之共享数据 要点是 url 应保持不变 即http mydomain myapp
  • 如何在 ionic 应用程序中使用 socket.io

    我正在使用 ionic 创建一个应用程序cordova and angular 我必须使用 IP 地址和端口号发出请求 到插座 我读过有关 socket io 的内容 我对如何安装感到困惑套接字 io以及如何与 Angular JS 和 N
  • ui-router 不渲染视图

    我最近拆分了一个 Rails 应用程序 并使用 yeoman 将前端创建为一个单独的应用程序 由于某种原因 我的视图不再呈现 例如我的应用程序定义 use strict var actionTrackApp angular module a
  • 在 AngularJs 中设置动态作用域变量 -scope.

    我有一根绳子 是从routeParam或指令属性或其他什么 我想基于此在范围上创建一个变量 所以 scope
  • $rootScope.$broadcast 不工作

    我正在尝试让 rootScope broadcast 刷新我的视图 服务是 var app angular module productsApp service serviceProvider function http this getD
  • AngularJS 的 HEAD 与 BODY

    在所有 AngularJS 示例中 Angular 库都放置在文档的 HEAD 标签中 我有一个基于 HTML5 Boilerplate 布局构建的现有项目 这定义了 JS 库应该放置在 DOM 的最底部 在 tag AngularJS需要

随机推荐