我正在使用 Ionic 2 (2.0.0-beta.10) 开发一个项目。我尝试通过请求传递授权 token 。但是标题没有被发送。我试图通过请求传递的其他 header 也没有被发送。
let url = 'http://www.example.com/savedata';
let data = JSON.stringify({ email: 'test@test.com', password: '123456' });
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Authorization', 'Bearer ' + "tokenContent");
let options = new RequestOptions({ headers: headers });
this.http.post(url, data, options).map(res => res.json()).subscribe(data => {
console.log("it worked");
}, error => {
console.log("Oooops!");
});
我的 REST API 收到带有以下 header 的请求:
Host: www.example.com
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://evil.com/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Access-Control-Request-Headers: authorization, content-type
Accept: */*
Referer: http://localhost:8100/?restart=794567
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
数据(正文)正确,只有标题问题我无法解决。 任何帮助将不胜感激。
最佳答案
这个问题在这里有答案: https://stackoverflow.com/a/45286959/4119650
Headers.append()
不更新对象,它返回它的一个克隆。通过实例化 Headers 对象然后调用 headers.append()
,不会使用 append
的结果。
相反,您可能需要这样做:
headers: Headers = new Headers().append('Content-Type', 'application/json').append('Authorization', 'Bearer' + "tokenContent");
Headers
无论如何都已弃用,应替换为 HttpHeaders
和 HttpClient
。
https://angular.io/api/common/http/HttpHeaders
https://angular.io/guide/http
关于http - ionic 2/Angular 2/CORS : HTTP Headers not being sent with request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775587/