Ionic 2(2.0.0-beta.10)を使用してプロジェクトに取り組んでいます。リクエストで認証トークンを渡そうとしましたが、ヘッダーが送信されていません。その他リクエストで渡そうとしたヘッダーが送信されていません。
let url = 'http://www.example.com/savedata';
let data = JSON.stringify({ email: '[email protected]', 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!");
});
My REST APIは、次のヘッダーを使用してこのリクエストを受信します。
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/411965
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/HttpHeadershttps://angular.io/guide/http
HttpClient を使用してみてください。それは最も簡単で最新のものです。
constructor(private http: HttpClient) {}
...
...
postData() {
const httpHeaders = new HttpHeaders({
'Content-Type' : 'application/json',
'Cache-Control': 'no-cache',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers': 'Origin, Accept, Access-Control-Allow-Origin, Content-Type, Authorization, X-Requested-With'
});
let url = 'http://www.example.com/savedata';
let data = JSON.stringify({ email: '[email protected]', password: '123456' });
this.http.post(url, data, { headers: httpHeaders, observe: 'response'}).subscribe(data => {
console.log("it worked");
}, error => {
console.log("Oooops!");
}); // Here you don't need to use map().
}