C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#ASP.NET WebAPIでCORSの問題を解決するにはどうすればよいですか?


クロスオリジンリソースシェアリング (CORS)は、追加のHTTPヘッダーを使用して、あるオリジンで実行されているWebアプリケーションに、別のオリジンから選択されたリソースへのアクセスを許可するようにブラウザーに指示するメカニズムです。 Webアプリケーションは、自身とは異なるオリジン(ドメイン、プロトコル、またはポート)を持つリソースを要求すると、クロスオリジンHTTPリクエストを実行します。

たとえば、フロントエンド(UI)とバックエンド(サービス)を持つアプリケーションについて考えてみましょう。フロントエンドがhttps://demodomain-ui.comから提供されているとします バックエンドはhttps://demodomain-service.com/apiから提供されます。エンドユーザーがアプリケーションにアクセスしようとすると、セキュリティ上の理由から、ブラウザはUIから開始されるクロスオリジンHTTPリクエストを制限します。

したがって、これを克服するには、サーバーがアセットにアクセスできるユーザーだけでなく、アセットへのアクセス方法も指定できるため、CORS標準が必要です。クロスオリジンリクエストは、標準のHTTPリクエストメソッドを使用して行われます。ほとんどのサーバーはGETリクエストを許可します。つまり、外部オリジン(たとえば、Webページ)からのリソースがアセットを読み取ることを許可します。 HTTPは、PATCH、PUT、DELETEなどのメソッドを要求します。以下は、CORSstandardによって追加されたHTTPヘッダーです-

  • Access-Control-Allow-Origin

  • Access-Control-Allow-Credentials

  • Access-Control-Allow-Headers

  • Access-Control-Allow-Methods

  • Access-Control-Expose-Headers

  • アクセス制御-最大年齢

  • Access-Control-Request-Headers

  • Access-Control-Request-Method

  • オリジン

グローバルレベルでのCORSの有効化

1つ目は、 Microsoft.AspNet.WebApi.Corsをインストールすることです。 Nugetパッケージマネージャーから。

次に、ファイルApp_Start/WebApiConfig.csを開きます。次のコードをWebApiConfig.Registerメソッドに追加します-

C#ASP.NET WebAPIでCORSの問題を解決するにはどうすればよいですか?

コントローラーおよびアクションレベルでのCORSの有効化

以下のように、コントローラーまたはアクションメソッドレベルでCORSを有効にすることもできます。

using System.Web.Http;
using System.Web.Http.Cors;
namespace DemoWebApplication.Controllers{
   [EnableCors("*", "*", "*")] //Controller level
   public class DemoController : ApiController{
      [EnableCors("*", "*", "*")] //Action level
      public IHttpActionResult Get(int id){
         return Ok();
      }
   }
}

同様に、[DisableCors]属性を使用してcorsを無効にできます。


  1. C#ASP.NET WebAPIのアクションメソッドからカスタム結果タイプを返す方法は?

    IHttpActionResultインターフェイスを実装することで、結果タイプとして独自のカスタムクラスを作成できます。 。 IHttpActionResultには、HttpResponseMessageインスタンスを非同期的に作成する単一のメソッドExecuteAsyncが含まれています。 public interface IHttpActionResult {    Task<HttpResponseMessage> ExecuteAsync(CancellationToken    cancellationToken); } コントロ

  2. VirtualBoxの「supR3HardenedWinReSpawnのエラー」を解決するにはどうすればよいですか?

    「supR3HardenedWinReSpawnのエラー」 Oracle Virtualboxのインストールで問題が発生します。通常、仮想マシンの起動を試みてから数秒後です。この問題が発生し始めると、作成されるすべての新しい仮想マシンに同じエラーメッセージが表示されます(Virtualboxが完全に使用できなくなります)。 注: この問題は、すべての仮想マシンの起動時の E_FAIL(0x80004005)エラーとは異なります。 このタイプの動作を引き起こす最も一般的な原因の1つは、ドライバーの欠落(VBoxDrv.inf)です。いくつかの許可の問題により、この重要なドライバーのイン