无法看到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
调用的返回值,以确保安全。这里还有一个关于文件名解析的问题。