[解決済み] プリフライト応答が成功しない
質問
Azure APIにリクエストを送るWebアプリケーションをangularで開発しています。APIはangularで保護されています。私がブラウザでURLを呼び出すと、私はマイクロソフトのログインページにリダイレクトされます。ログイン後、私はAPIに戻ってきました。
さて、angularアプリからAPIにリクエストを送りたいと思います。
const auth = btoa("[my username]:[my password]");
headers = {"Authorization": "Basic " + auth};
$http.get("http://[webapp name].azurewebsites.net/api/contacts", {headers: headers}).then(function (response) {
console.log("!!!LoggedIn!!!");
});
azureポータルのCORSに[webapp名].azurewebsites.netを追加してみました。 これを実行すると、エラーが発生します。
[Error] Failed to load resource: server responded with status of 400 (不正なリクエスト)
[Error] リソースの読み込みに失敗しました。プリフライトの応答が成功しません
[エラー] XMLHttpRequestが読み込めない http://[ウェブアプリ 名前].azurewebsites.net/api/contacts
azurewebsites.net/api/contacts. プリフライトの応答が正常に行われない
修正する方法を教えてください。
アップデイト
このコードでもう一度試してみました。
const auth = btoa("[my username]:[my password]");
var config = {headers: {
'Authorization': 'Basic ' + auth,
"Origin": "http://[webapp name].azurewebsites.net/api/contacts",
"Access-Control-Request-Method": "GET",
"Access-Control-Request-Headers": "X-Custom-Header"
}
};
$http.get("http://[webapp name].azurewebsites.net/api/contacts", config).then(function (response) {
console.log("!!!LoggedIn!!!");
});
今、このようなエラーが出ています。
安全でないヘッダ "Origin"の設定を拒否されました。
安全でないヘッダー "Access-Control-Request-Method" の設定を拒否されました。
安全でないヘッダー "Access-Control-Request-Headers" の設定を拒否されました。
プリフライトリクエストに対するレスポンスがアクセスコントロールチェックに合格していません。要求されたリクエストに 'Access-Control-Allow-Origin' ヘッダーが存在しない。 リソースがあります。したがって、Origin 'null'はアクセスを許可されていません。このレスポンス はHTTPステータスコード400
これらの "unsafe headers" を削除しても、最後のエラーメッセージは残っています。
なぜOriginは自動的にnullになるのですか?
解決方法は?
リクエストサイトのURLのアドレスをCORSで サーバー/バックエンド のコードで指定します。言語やフレームワークによって、この追加方法は異なるかもしれませんので、Googleで "[backend language] cors" (e.g. "C# cors") と検索してみてください。(クレジット: @Gary Liu - MSFT)
開発者コンソールのネットワークタブを確認することで、正しいオリジンを追加したことを確認することができます。
関連
-
[解決済み] ajaxリクエスト時にAngularjsのローディング画面が表示される。
-
[解決済み] md-selectでデフォルト値を設定する方法
-
angularjsのルーティングについて $stateと$stateParamsの話
-
[解決済み] プリフライト要求に対する応答がアクセス制御チェックを通過しない
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み] JavaScriptでウェブページのHTTPヘッダーにアクセスする
-
[解決済み】「アクセス制御-許可-オリジン」がない - Node / Apacheのポートの問題
-
[解決済み】AngularJS がクロスオリジンリソースに対して OPTIONS HTTP リクエストを実行する場合
-
[解決済み】http://localhost CORS originが機能しないのはなぜですか?
-
[解決済み】リクエストヘッダーフィールドのAccess-Control-Allow-Headersが許可されない。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] angularJSのSTATEを理解する
-
[解決済み] オブジェクトと選択機能を備えたAngularJS BootstrapUI Typeahead
-
[解決済み] Angular 1.2+ で ng-bind-html-unsafe を複製するために $sce.trustAsHtml(string) を使用するにはどうしたらよいですか?
-
[解決済み] ag-gridの行の追加/削除
-
[解決済み] 'ApplicationSignInManager' が見つからない(ASP.NET MVC)
-
[解決済み] Angularのui-routerでデフォルトの状態を設定する方法
-
[解決済み] AngularJSで画像を表示する
-
angularjs が src で指定されたコンテンツを iframe 内で正しく表示しない
-
[解決済み] Preflightとredirectを使用したCORSリクエスト: 不許可になりました。回避策は?
-
[解決済み] AngularJSでEnterキーを押したときにフォームを送信する