web-dev-qa-db-ja.com

ASP.NET MVCでクロスオリジンリクエストを有効にする方法

MVC 5でクロスオリジンリクエスト(CORS)で動作するWebアプリケーションを作成しようとしています。結果なしですべてを試しました。

属性付き

public class AllowCrossSiteJsonAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");

        base.OnActionExecuting(filterContext);
    }
}

EnableCors属性を使用

 [EnableCors("*")]

何もうまくいかない私はそれが不可能だと思い始めています

23
Petar Bechev

クロスオリジンリクエストを有効にするには、[EnableCors]属性をWeb APIコントローラーまたはコントローラーメソッドに追加します。

[EnableCors(origins: "http://systematixindia.com", headers: "*", methods: "*")]
public class TestController : ApiController
{
   // Controller method`enter code here`s not shown...
}

続きを読む

1

最も便利だと思うのは、次のような独自のクラスを作成することです。

enter image description here

次のコードが含まれています:

using System;
using System.Web.Mvc;

public class AllowCrossSiteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:4200");
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");

        base.OnActionExecuting(filterContext);
    }
}

この後、methodまたは全体controllerでこのデコレータを使用できます

enter image description hereenter image description here

この手順の後、応答ヘッダーでそれを見ることができるはずです

enter image description here

これに感謝します response

33
Fitch

Web.configファイルに構成設定を追加して、customHeadersAccess-Control-Allow-Originの値を次のように設定します-

<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>

詳細およびその他のオプションについては、 this および this にアクセスしてください。

30
Yogi

ApiControllersに加えて、MVC ControllerおよびOwinミドルウェアのCorsを有効にするために、OWIN CORS実装(nuget Microsoft.Owin.Cors)を使用して成功しました。 Microsoft.AspNet.WebApi.Cors(config.EnableCors()および[EnableCors]属性を使用)は、ApiControllersでのみ機能するようです。

サンプルコードについては、 http://benfoster.io/blog/aspnet-webapi-cors を参照してください。

0
PointZeroTwo

「OnAuthentication」ステップに追加するか、Web構成に構成を追加する必要があると思います。あなたは私のコードを試すことができます:)それは動作します

 public class AllowCrossSiteJsonAttribute : ActionFilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
        }

    }
0
Alex Nguyen