はじめに:
この間、私たちは別のプロジェクトにASP.NET MVCプロジェクトの終了前と後の新たな需要を引き継ぎました。フロントエンドVueが、バックエンドは、ASP.NET WEBAPIの使用です。我々は、広範な問題前面を発見し、後端がクロスドメイン(CORS)を分離し、フロントの完了とフレーム構造、テストインタフェースの後端後に問題を要求します。だから、CORSサポートのASP.NET WEBAPIを有効にする方法この記事がありました。
まず、Vueのエラーを解決:OPTIONS 405件のメソッドは許可されていません質問:
エラーを再現:
index.umd.min.js:1 OPTIONSます。http:// localhostを:1204 / API /ログイン/ ShopKeeperLogin 405(メソッドが許可されていません)
ソリューション:
プロジェクトにGlobal.asaxの中にOPTIONSメソッドの処理を追加します。
/// <まとめ> /// クロスドメイン設定(プリ要求応答質問) /// </要約> 保護された ボイドApplication_BeginRequest() { // 主な機能は、OPTIONS要求方法(プレ要求は、要求が正常であることができるか否かを判断します)。 // サーバのパフォーマンスをチェックするために使用。例えば:AJAXプリフライト要求するとき、クロスドメイン、別のセキュリティドメインにするかどうか、実際の送信リソースの決定を要求する最初のHTTP OPTIONS要求を送信する必要があります。 IF(Request.Headers.AllKeys.Contains(「原点」)&& Request.HttpMethod == 「OPTIONS 」) { //は)(page.Response.Flushを実行し、バッファのすべての内容がいつ、出力バッファの内容を表します完成し、コンテンツがクライアントに送信されます。 // これは、ユーザーが無制限の待機を許可する、スタックステータスページで、その結果、間違って行くことはありません )(Response.Flushを。 } }
第二に、ソリューションASP.NET WEBAPIクロスドメイン・リソースは - クロスオリジンリソース共有(CORS)の問題を共有します:
エラーを再現:
「のhttp:// localhostを:/ログイン/ ShopKeeperLogin 1204 / API」でのXMLHttpRequestへのアクセス原点から「のhttp:// localhostを:8081」CORSポリシーによってブロックされました:プリフライトリクエストへの応答は、アクセス制御チェックに合格しない:いいえ「アクセス制御 - 許可原点」ヘッダは、要求されたリソース上に存在します。
すべてのソース、HTTPメソッド、クロスドメイン要求ヘッダーを許可します。
Web.configファイルに内側たSystem.webServerラベルには、次の設定を追加します:
<httpProtocol> <customHeaders> <=名前を追加し、「アクセス制御-許可-起源」 =値「* 」 /> <=名前を追加し、「アクセス制御-許可-ヘッダ」値= 「* 」 /> =名前を追加します< " アクセス制御-許可-メソッド"値= "POSTをGET、PUT、DELETE " /> </ customHeaders> </ httpProtocol>
対応するソース、HTTPリクエスト・ヘッダーとクロスドメインのメソッドを指定します。
詳細については、マイクロソフトの公式ドキュメントを参照してください。https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api#set-the-allowed-起源