フロントとリアのASP.NET WEBAPI +許可分離ヴューは、クロスドメイン要求を有効に終了します

はじめに:

  この間、私たちは別のプロジェクトに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-起源

 

おすすめ

転載: www.cnblogs.com/Can-daydayup/p/11762105.html