トピックにはいくつかの質問がありますが、私の問題の解決策を見つけることはできません。角4:いいえ、「アクセス制御が許可されたオリジン」ですが、ポストリクエストでのみ
私はアンギュラ4にはかなり新しいので、外部カスタムAPIを使用して簡単な作成/更新/削除サービスを構築しようとしています。
私はまずCORSに問題がありましたが、APIのサーバー側に「Access-Control-Allow-Origin」ヘッダーを設定することで修正されました。
私のGET/PATCHとDELETE要求はうまく動作しますが、私の "POST"はまだエラーをキャッチします。
ここに「奇妙な」部分があります。
google chromeのデベロッパーツールの[ネットワーク]タブを確認すると、「オプション」と「POST」の両方のリクエストが表示されますが、「オプション」だけが「アクセス」 - Control-Allow-Origin:http://localhost:3003 "を応答ヘッダーに追加します。
しかし、両方とも "200"応答コードを送信します。 (ここにはsome screenshots)
なぜポストブレークは他のものがうまくいくのですか?
は、ここに私のサービスから、いくつかのコードサンプルです:あなたがもたらすことができる任意の助けを事前に
private headers = new Headers({'Content-Type': 'application/json'});
// works
update(id: number, fields: any): Promise<Tag> {
const url = `${this.tagsUrl}/${id}`;
return this.http
.patch(url, JSON.stringify(fields), {headers: this.headers})
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
// doesn't work
create(tagName: string, tagType: number): Promise<any> {
return this.http
.post(this.tagsUrl, JSON.stringify({name: tagName, tagType: tagType}), {headers: this.headers})
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
ありがとう!
マイケル
これは角度関連の問題ではありません。それは間違ったことをするバックエンドです。あなたのバックエンドと同じホストでAngularを実行することをお勧めします。だから、**プリフライト**をスキップすると、痛みを感じることがあります。 – Swoox
私は参照してください。私はバックエンドの担当者と解決策を見つけようとします。 しかし、どのように問題は "投稿"と他の方法でのみ表示されますか? –
これで、投稿はバッキングによって許可されません。私はプリフライトがPOSTに付いてくるだけなのかどうかは分かりませんが、Googleにはあなたの答えが見つかります。 – Swoox