私はAngularの新機能です。RESTサービスを呼び出して、サインアップページのドロップダウンを埋めるために使用する組織のリストを取得しようとしています。私のログインページは正常に動作しています。トークンを取得してlocalStorageに保存します。 console.log()ステートメントに基づいて、サインアップフロー中にこのトークンも取得されますが、リクエストとともにヘッダーに渡されるだけではありません。ここに、chromeの開発ツールのヘッダリストがあります。ここで enter image description here角度/ Httpヘッダーを使用してリクエストを受け付けません
これは私が
import { Injectable, OnInit } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
import {HttpService} from './http.service';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Organization} from '../../model';
@Injectable()
export class OrganizationService implements OnInit {
orgs: Organization[];
constructor(private http: HttpService) { this.http = http}
ngOnInit() {
console.log('ngOnInit OrganizationService called.');
}
getOrganizations(): any {
console.log('getOrganizations OrganizationService called.');
// get the token here from localstorage and add to header.
return this.http.get('http://localhost:9966/api/getOrganizations')
.subscribe(result => {
console.log(result);
});
/* .map((res) => {
console.log('got http response');
console.log(res.json());
return res.json();
});*/
//return this.orgs;
}
}
それを呼び出しています問題は、 'X-認証' ヘッダの値がで渡されていないことがいかにある私のhttp.service.ts
import {Injectable} from '@angular/core';
import {Http, Headers, RequestOptions} from '@angular/http';
@Injectable()
export class HttpService {
constructor (public http: Http) {}
createAuthorizationHeader(headers: Headers) {
console.log('HttpService createAuthorizationHeader called');
let tok = JSON.parse(localStorage.getItem('currentUser')).token;
console.log(tok);
//headers.append('X-Authorization', 'Bearer ' + tok);
headers.set('X-Authorization', 'Bearer ' + tok);
}
get(url) {
let headers = new Headers();
console.log('HttpService get called- ' + url);
this.createAuthorizationHeader(headers);
/* let tok = JSON.parse(localStorage.getItem('currentUser')).token;
console.log(tok);
//headers.append('X-Authorization', 'Bearer ' + tok);
headers.set('X-Authorization', 'Bearer ' + tok);*/
let options = new RequestOptions({ headers: headers });
console.log(headers.toJSON());
return this.http.get(url, options).map(res => res.json());
}
post(url, data) {
let headers = new Headers();
this.createAuthorizationHeader(headers);
return this.http.post(url, data, {
headers: headers
});
}
}
です要求。そのため、サーバーは401ステータスを返送しています。私はRequestOptionsを使ってみましたが、同じ問題です。この中で助けをお待ちしております。
@LLは、私が追加するヘッダーのように見える "Access-Control-Request-Headers"の下にあります。開発ツールの出力を参照してください。 「OPTIONS/API/getOrganizations HTTP/1.1 ホスト:localhostを:9966 接続:キープアライブ のCache-Control:最大エージング= 0 アクセス制御リクエスト・メソッド:GET 起源ます。http:// localhost :4200の アクセス制御リクエスト・ヘッダー:コンテンツタイプ、xは承認 を受け入れる:*/* リファラーます。http:// localhost:4200 /サインアップ 受け入れエンコード:gzipでは、収縮、SDCH、BR を受け入れます-Language:en-US、en; q = 0.8 " – HotelCalifornia