[解決済み】Angular HttpClientにHTTPヘッダを追加してもヘッダが送信されない、なぜ?
2022-04-07 11:30:01
質問
以下は私のコードです。
import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
logIn(username: string, password: string) {
const url = 'http://server.com/index.php';
const body = JSON.stringify({username: username,
password: password});
const headers = new HttpHeaders();
headers.set('Content-Type', 'application/json; charset=utf-8');
this.http.post(url, body, {headers: headers}).subscribe(
(data) => {
console.log(data);
},
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log('Client-side error occured.');
} else {
console.log('Server-side error occured.');
}
}
);
}
と、ここでネットワークのデバッグを行います。
Request Method:POST
Status Code:200 OK
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:46
Content-Type:text/plain
という文字列が'Request Payload'に格納されますが、私のサーバーではPOST値を受信しません。
print_r($_POST);
Array
(
)
POST時にヘッダーが設定されていないことがエラーの原因だと思うのですが、何か間違ったことをしたのでしょうか?
どうすればいいですか?
のインスタンスは、新しい
HttpHeader
クラスは
不変
オブジェクトになります。クラスのメソッドを呼び出すと、結果として新しいインスタンスが返されます。そのため、基本的には以下のようにする必要があります。
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/json; charset=utf-8');
または
const headers = new HttpHeaders({'Content-Type':'application/json; charset=utf-8'});
アップデート:複数のヘッダを追加する
let headers = new HttpHeaders();
headers = headers.set('h1', 'v1').set('h2','v2');
または
const headers = new HttpHeaders({'h1':'v1','h2':'v2'});
HttpClientのヘッダやパラメータにオブジェクトマップを使用できるようにした。
から
5.0.0-beta.6
の作成を省略することが可能になりました。
HttpHeaders
オブジェクトを作成し、オブジェクトマップを直接引数として渡します。そこで、次のようなことが可能になりました。
http.get('someurl',{
headers: {'header1':'value1','header2':'value2'}
});
関連
-
[解決済み】angularJS2プロジェクトでsystemjs.config.jsファイルをどこに置くか/見つけるか?
-
[解決済み] LegendItemComponent をカスタマイズする Angular 用 kendo-ui
-
[解決済み] エラーです。複数のモジュールがマッチしました。skip-import オプションを使用して、最も近いモジュールへのコンポーネントのインポートをスキップしてください。
-
[解決済み] イオン4オブザーバブル
-
[解決済み] ionInputとionChangeで有意差あり
-
[解決済み] ブレークポイントの解除 - VS Code | Chrome | Angular
-
[解決済み] Angular 6でmouseoverとmouseoutを使用する方法
-
[解決済み] Angular 4 - "BrowserAnimationsModule "または "NoopAnimationsModule "のいずれかをアプリケーションに組み込んでください。
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】VSCodeはモジュール'@angular/core'や他のモジュールを見つけることができません。
-
[解決済み】serveコマンドを使用するには、angular-cliプロジェクト内にいる必要があります。
-
[解決済み】angular 4アプリにReactiveFormsModuleを追加すると、NgControl用のプロバイダがないエラーが発生する。
-
[解決済み】エラー。どのルートにもマッチしません。URLセグメント: - Angular 2
-
[解決済み] Angular2 Router: Error: Cannot find primary outlet to load 'InboxComponent'.
-
[解決済み] 未定義のプロパティ 'filter' を読み取ることができません。
-
[解決済み] ngForにフィルターをかけるには?
-
[解決済み] ウェブストーム Must be lvalue」の意味するところ
-
[解決済み] "エラーです。オーバーレイのプロバイダがありません!"
-
[解決済み] Angular2の$document.ready()に相当します。