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メソッドに追加します-
コントローラーおよびアクションレベルでの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を無効にできます。
-
C#ASP.NET WebAPIのアクションメソッドからカスタム結果タイプを返す方法は?
IHttpActionResultインターフェイスを実装することで、結果タイプとして独自のカスタムクラスを作成できます。 。 IHttpActionResultには、HttpResponseMessageインスタンスを非同期的に作成する単一のメソッドExecuteAsyncが含まれています。 public interface IHttpActionResult { Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken); } コントロ
-
VirtualBoxの「supR3HardenedWinReSpawnのエラー」を解決するにはどうすればよいですか?
「supR3HardenedWinReSpawnのエラー」 Oracle Virtualboxのインストールで問題が発生します。通常、仮想マシンの起動を試みてから数秒後です。この問題が発生し始めると、作成されるすべての新しい仮想マシンに同じエラーメッセージが表示されます(Virtualboxが完全に使用できなくなります)。 注: この問題は、すべての仮想マシンの起動時の E_FAIL(0x80004005)エラーとは異なります。 このタイプの動作を引き起こす最も一般的な原因の1つは、ドライバーの欠落(VBoxDrv.inf)です。いくつかの許可の問題により、この重要なドライバーのイン