programing

ASP에서 교차 오리진 요청을 활성화하는 방법.NET MVC

linuxpc 2023. 9. 3. 12:13
반응형

ASP에서 교차 오리진 요청을 활성화하는 방법.NET MVC

저는 MVC 5에서 CORS(cross-origin request)로 작동하는 웹 애플리케이션을 만들려고 합니다.저는 아무 성과 없이 모든 것을 시도했습니다.

속성 포함

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

        base.OnActionExecuting(filterContext);
    }
}

EnableCors 특성 포함

 [EnableCors("*")]

아무 것도 작동하지 않습니다. 불가능하다고 생각하기 시작했습니다.

web.config 파일에 구성 설정을 추가하여 다음에 대한 값을 설정합니다.Access-Control-Allow-OrigincustomHeaders이런 식으로 -

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

자세한 내용과 기타 옵션을 보려면 이 페이지와 이 페이지를 방문하십시오.

제가 가장 편리하다고 생각하는 것은 다음과 같이 자신만의 클래스를 만드는 것입니다.

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);
    }
}

이 후에는 메소드 또는 전체 컨트롤러에서 이 장식기를 사용할 수 있습니다.

enter image description here enter image description here

이 절차가 끝나면 응답 헤더에서 이를 확인할 수 있습니다.

enter image description here

답변에 감사드립니다.

OWIN CORS 구현(Nuget Microsoft)을 사용하는 데 성공했습니다.Owin.Cors)는 API 컨트롤러 외에도 MVC 컨트롤러 및 Owin 미들웨어용 Cors를 활성화합니다.마이크로소프트.AsNet.WebApi.코르스(사용)config.EnableCors()그리고[EnableCors]속성)은(는) API 컨트롤러에서만 작동하는 것 같습니다.

샘플 코드는 http://benfoster.io/blog/aspnet-webapi-cors 을 참조하십시오.

"On Authentication" 단계에 추가하거나 웹 구성에 구성을 추가해야 한다고 생각합니다.당신은 제 코드를 사용해 볼 수 있습니다 :)

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

    }

아래 코드를 사용하여 교차 오리진 요청을 허용할 수도 있습니다.

public void ProcessRequest (HttpContext context)
        {
     context.Response.AddHeader("Access-Control-Allow-Origin" , "*");
}

MVC 5(코어)에서 CORS를 활성화하려면 먼저 추가해야 합니다.Microsoft.AspNetCore.Cors패키지를 프로젝트에 추가합니다.그런 다음 구성startup.cs모든 웹 사이트에 대해 이와 같이

public void ConfigureServices(IServiceCollection services)
 {
     services.AddMvc();
     //Add Cors support to the service
     services.AddCors();

     var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();

     policy.Headers.Add("*");    
     policy.Methods.Add("*");          
     policy.Origins.Add("*");
     policy.SupportsCredentials = true;

     services.ConfigureCors(x=>x.AddPolicy("AllPolicy", policy));

 }


 public void Configure(IApplicationBuilder app, IHostingEnvironment  env)
 {
     // Configure the HTTP request pipeline.

     app.UseStaticFiles();
     //Use the new policy globally
     app.UseCors("AllPolicy");
     // Add MVC to the request pipeline.
     app.UseMvc();
 }

그리고 나서 당신은 이렇게 사용할 수 있습니다.

[EnableCors("AllPolicy")]

세부 정보는 여기에 있습니다.

교차 오리진 요청을 사용하려면 다음을 추가합니다.[EnableCors]웹 API 컨트롤러 또는 컨트롤러 메서드의 속성:

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

더 읽기

언급URL : https://stackoverflow.com/questions/40079214/how-to-enable-cross-origin-requests-in-asp-net-mvc

반응형