Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法看到http post[Angular4]的标题_Angular_Typescript_Http Post - Fatal编程技术网

无法看到http post[Angular4]的标题

无法看到http post[Angular4]的标题,angular,typescript,http-post,Angular,Typescript,Http Post,这应该很容易解决,但我知道我的头脑找不到解决办法 我有一篇这样的帖子: getAccordo(filtro: Filter): Observable<Response> { return this.http.post<Response>(`${this.ENDPOINT}/export`, filtro, {observe: 'response', responseType: 'blob' as 'json'} )

这应该很容易解决,但我知道我的头脑找不到解决办法

我有一篇这样的帖子:

getAccordo(filtro: Filter): Observable<Response>  {
    return this.http.post<Response>(`${this.ENDPOINT}/export`,
        filtro,
        {observe: 'response', responseType: 'blob' as 'json'}   
    )
        .catch(error => this.handleError(error));
}
当我查看chrome控制台时,我可以看到在标题中有一个
内容配置:附件;filename=“esportazione\u accordi\u 20180905.xlsx”

但在我的“res”中,这是缺失的

我想做的是获取文件名并在anchor.download中使用它

谢谢你的帮助,如果你还需要什么,尽管问

编辑

这是我从响应标题中获得的标题,我甚至没有看到其中的一个:

在服务器端,我添加了:
.header(“访问控制公开头”,“内容处置”)
,但仍然不起作用

编辑2:

好的,我们越来越近了,我需要在图片的末尾得到“filename”值,并将其分配给anchor.download

为了向您的Angular XHR公开此标题,服务器需要设置
访问控制公开标题
响应标题,以允许专门访问
内容处置
标题。有关该主题的更多信息,请访问:

默认情况下,仅显示6个简单响应头:

  • 缓存控制
  • 内容语言
  • 内容类型
  • 到期
  • 最后修改
  • 布拉格马
如果希望客户端能够访问其他标头,则必须使用访问控制公开标头标头列出它们

这意味着您的服务器需要设置以下标头:

Access-Control-Expose-Headers: Content-Disposition
在Angular中,使用
HttpClient
,响应头将被延迟解析-要获取特定头的值,您需要使用如下内容
获取头:

res.headers.get('Content-Disposition');
为了向您的Angular XHR公开此标头,服务器需要设置
访问控制公开标头
响应标头,以允许专门访问
内容处置
标头。有关该主题的更多信息,请访问:

默认情况下,仅显示6个简单响应头:

  • 缓存控制
  • 内容语言
  • 内容类型
  • 到期
  • 最后修改
  • 布拉格马
如果希望客户端能够访问其他标头,则必须使用访问控制公开标头标头列出它们

这意味着您的服务器需要设置以下标头:

Access-Control-Expose-Headers: Content-Disposition
在Angular中,使用
HttpClient
,响应头将被延迟解析-要获取特定头的值,您需要使用如下内容
获取头:

res.headers.get('Content-Disposition');

响应头是惰性解析的-您需要实际尝试使用
res.headers.get('Content-Disposition')
来获取头以查看结果。好的,如果我使用res.headers.get('Content-Disposition'),我将获取所有内容,最后一步,我如何使用我需要的值?我将在一分钟内再次更新帖子,向您展示我的意思,您可以使用regex来实现这一点-这里有一个非常基本的示例:
constfilename=/attachment;filename=“(.+”)/.exec(headerValue)[1]。这假设正则表达式将匹配-您可以在访问第二个数组元素之前检查
exec
调用的返回值,以确保安全。这里还有一个问题专门针对文件名解析内容。响应头是惰性解析的-您需要使用
res.headers.get('Content-Disposition')
查看结果。好吧,如果我使用res.headers.get('Content-Disposition'),我会得到一切,最后一步,我如何使用我需要的值?我将在一分钟内再次更新帖子,向您展示我的意思,您可以使用regex来实现这一点-这里有一个非常基本的示例:
constfilename=/attachment;filename=“(.+”)/.exec(headerValue)[1]。这假设正则表达式将匹配-您可以在访问第二个数组元素之前检查
exec
调用的返回值,以确保安全。这里还有一个关于文件名解析的问题。