しばらくの間、私は地元の角度ビルドをHTTPSで提供するように努力していました(覚えておいて、最後のSSL問題に遭遇することはないでしょうか?アプリ)。しかし、成功しなかったのですが、私はng serve
を使用しました。しかし、すべてのAJAXリクエストは失敗しています。私はスリムAPIを提供するローカルVMを実行し、CORSの設定を持っています。しかし、私は次のエラーを見ました:ネットワーク]タブでコールを見てみると角度設定のHTTPリクエストの起点がnullの場合
The 'Access-Control-Allow-Origin' header has a value 'http://gamersplane.local' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access.
を、私は元のヘッダーが実際にnullであることがわかり、そして私のコードを見、私は元のヘッダーと混乱しません(できるかどうかわからない?)。私はAuthorization
ヘッダーを設定しますが、それはありますか?ここにAPIサービスがあります:
private addToken(headers: HttpHeaders) {
let token = localStorage.getItem('token');
if (token) {
headers = headers.set('Authorization', 'Bearer ' + token);
}
return headers;
}
private constructParams(data?: Object) {
// Object.keys(data).reduce((params, key) => params.set(key, data[key]), new HttpParams());
let params = new HttpParams();
for (let key in data) {
if (typeof data[key] !== 'object') {
params = params.set(key, data[key]);
} else {
for (let oKey in data[key]) {
params = params.set(key + '[' + oKey + ']', data[key][oKey]);
}
}
}
return params;
}
get<T = any>(path: string, data?: Object): Observable<T> {
let headers = new HttpHeaders();
headers = this.addToken(headers);
return this.http
.get<T>(environment.apiDomain + path, {
headers: headers,
params: this.constructParams(data)
});
}
アドバイスはありますか?
これはAngularとは関係ありません。サーバーは予想されるヘッダーで応答する必要があり、ブラウザーは要求を出します(それ以外の場合は拒否します)。 –
角度の関係ではなく、要求元がnullに設定されていますか?それはCORSの飛行前の応答によって制御されないのですか? – RhoVisions