【发布时间】:2020-03-14 19:00:21
【问题描述】:
我正在尝试使用带有 JWT 令牌的 Angular 从我的 API 获取 HTML 页面。但是如果我没有指定文本类型,编译器会吐出一个无法解析的错误(它会尝试将 HTML 解析为 JSON),所以我需要指定我的响应类型。
这是我的 component.ts:
httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer TOKENHERE'
})
};
constructor(private http: HttpClient) { }
ngOnInit() {
}
fetchDashboard() {
this.http.get('http://localhost:3000/avior/dashboard', {responseType: 'text', this.httpOptions,}).subscribe(j => console.log(j));
}
}
我尝试将内容类型删除或更改为 text/html,但无济于事。
我的 API 响应:
<html><head><title>Dashboard</title></head><body><h1>Dashboard works!</h1></body></html>
【问题讨论】:
-
内容类型标头是否正确?通过 POSTMAN 之类的客户端访问此 API 时,您传递了哪些标头?
-
@NicholasK in Postman 我只指定 Authorization 标头与格式为 Bearer
的令牌 -
httpCilentModule默认会解析您的请求,因此您必须指定内容类型 -
另外,为什么要在 GET 请求中指定 Content-Type?仅适用于 PUT、PATCH、POST(实际在其正文中发送数据的请求)的 AFAIK。
-
根据您之前的评论,无需将
Content-Type作为标题传入。
标签: javascript angular xmlhttprequest jwt angular-httpclient