タグ付けされた質問 「preflight」

10
REST APIからデータを取得しようとしたときに、リクエストされたリソースに「Access-Control-Allow-Origin」ヘッダーがありません
HP AlmのREST APIからデータをフェッチしようとしています。それは小さなカールスクリプトでかなりうまく機能します-私は私のデータを取得します。 JavaScriptでこれを行うと、フェッチとES6(多かれ少なかれ)がより大きな問題になるようです。私はこのエラーメッセージを受け取り続けます: Fetch APIを読み込めません。プリフライト要求への応答がアクセス制御チェックに合格しません:要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http://127.0.0.1:3000 'はアクセスを許可されません。応答のHTTPステータスコードは501でした。不透明な応答がニーズを満たす場合は、リクエストのモードを「no-cors」に設定して、CORSを無効にしてリソースをフェッチします。 これは、ローカルホストからデータを取得しようとしているためであり、ソリューションはCORSを使用する必要があることを理解しています。今私は実際にそれをやったと思ったが、どういうわけかそれは私がヘッダーに書いたものを無視するか、問題は別のものですか? それで、実装の問題はありますか?私はそれを間違っていますか?残念ながら、サーバーログを確認できません。私は本当にここで行き詰まっています。 function performSignIn() { let headers = new Headers(); headers.append('Content-Type', 'application/json'); headers.append('Accept', 'application/json'); headers.append('Access-Control-Allow-Origin', 'http://localhost:3000'); headers.append('Access-Control-Allow-Credentials', 'true'); headers.append('GET', 'POST', 'OPTIONS'); headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password)); fetch(sign_in, { //mode: 'no-cors', credentials: 'include', method: 'POST', headers: headers }) …

10
CORS-プリフライトリクエストを導入する動機は何ですか?
クロスオリジンリソースシェアリングは、Webページが(wikipediaから)別のドメインにXMLHttpRequestsを作成できるようにするメカニズムです。 私はこの数日間CORSをいじっていますが、すべてがどのように機能するかについてはかなり理解していると思います。 したがって、私の質問はCORS /プリフライトがどのように機能するかについてではなく、新しいリクエストタイプとしてプリフライトを思い付く背後にある理由についてです。実際のリクエスト(RR)が受け入れられるかどうかを確認するためだけにサーバーAがサーバーBにプリフライト(PR)を送信する必要がある理由を確認できません。以前のPR。 かなり検索した後、私が見つかりました。この作品 www.w3.orgで情報の(7.1.5)を: この仕様が存在する前に特定のユーザーエージェントから発信できなかったクロスオリジンリクエストからリソースを保護するために、プリフライトリクエストが行われ、リソースがこの仕様を認識していることを確認します。 これは文を理解するのが最も難しいと思います。私の解釈(「最良の推測」と呼ぶ方がよいでしょう)は、仕様を認識していないサーバーCからの要求からサーバーBを保護することです。 誰かがシナリオを説明してもらえますか/ PR + RRがRR単独よりもうまく解決する問題を示しますか?
366 ajax  html  http  cors  preflight 

14
AngularJSはクロスオリジンリソースに対してOPTIONS HTTPリクエストを実行します
テンプレートファイルを配信するアセットホストが別のドメインにあるクロスオリジンリソースと通信するようにAngularJSを設定しようとしています。そのため、angularが実行するXHRリクエストはクロスドメインでなければなりません。これを機能させるために、HTTPリクエスト用の適切なCORSヘッダーをサーバーに追加しましたが、機能していないようです。問題は、ブラウザー(クロム)でHTTPリクエストを検査すると、アセットファイルに送信されるリクエストがOPTIONSリクエスト(GETリクエストであるはず)であることです。 これがAngularJSのバグなのか、何かを設定する必要があるのか​​わかりません。XHRラッパーはOPTIONS HTTPリクエストを作成できないので、ブラウザーがGETリクエストを実行する前に最初にアセットをダウンロードできるかどうかを判断しようとしているようです。この場合、資産ホストにもCORSヘッダー(Access-Control-Allow-Origin:http : //asset.host ..。)を設定する必要がありますか?

3
Chromeが[ネットワーク]タブにOPTIONSリクエストを表示しない
私のWebクライアントアプリケーションは、フェッチAPIを介してHTTPPOSTリクエストを設定しています。 OPTIONSプリフライトリクエストはデバッグプロキシ(Charles Proxy)を介して送信されますが、GoogleChromeデベロッパーツール\ネットワークタブに表示されません。 [ネットワーク]タブにフィルターを設定していません。OPTIONSリクエストがそこに表示されていたのを覚えていますが、もう表示されていません。どうすれば元に戻すことができますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.