关于Angularjs在$http.Post请求Response的Header中取不到值的问题

zfy3042 2018-09-12 11:11:21
我想用Angularjs与后端的WebAPI分离,实现跨域处理。
我想使用http请求进行文件下载,在后端代码将文件名称放置在Content-Disposition属性中。但是前端就是拿不到Content-Disposition属性,用getAllResponseHeaders也只能返回Content-Type这一个字段值。有高手帮忙解决一下。

后端Global.asax代码:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", “*”);
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "x-HighCloud-instance,Origin, Content-Type ,Content-Disposition, Authorization, Accept, X-Requested-With");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
HttpContext.Current.Response.AddHeader("Content-Type", "text/html; charset=utf-8");
HttpContext.Current.Response.AddHeader("Content-Disposition", "11");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}


后端接口代码:

var response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new ByteArrayContent(ms.ToArray());
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = HttpUtility.UrlEncode(file.RealName);
//response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(contentType);
response.Content.Headers.Add("Content-Type2", "attachment;filename=" + HttpUtility.UrlEncode(file.RealName));
response.Content.Headers.Add("Content-Type", contentType);
return response;




Http.GetSource("/api/File/Download?Account=" + Variable.Account + "&Token=" + item.ID)
.then(function (response) {
if (response.status == 200) {
var Disposition = response.headers("Content-Disposition");
console.log("headers: ", response.headers);
fileName = Common.Method.GetFileNameForStream(response, "文件名称.xls");
var data = new Blob([response.data], { type: response.headers('Content-Type') });
FileSaver.saveAs(data, fileName);

}
});
...全文
522 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfy3042 2018-09-12
  • 打赏
  • 举报
回复
解决了,结题.
在后台代码中设置response.Content.Headers.Add("Access-Control-Expose-Headers", "Content-Type,Content-Disposition");即可。
有朋友遇到希望可以帮的上忙.

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧