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-Origin
에customHeaders
이런 식으로 -
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
자세한 내용과 기타 옵션을 보려면 이 페이지와 이 페이지를 방문하십시오.
제가 가장 편리하다고 생각하는 것은 다음과 같이 자신만의 클래스를 만드는 것입니다.
다음 코드가 포함되어 있습니다.
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);
}
}
이 후에는 메소드 또는 전체 컨트롤러에서 이 장식기를 사용할 수 있습니다.
이 절차가 끝나면 응답 헤더에서 이를 확인할 수 있습니다.
이 답변에 감사드립니다.
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
'programing' 카테고리의 다른 글
빈 jQuery 선택 결과에 대한 테스트 (0) | 2023.09.03 |
---|---|
web.xml의 applicationContext.xml 파일 대신 Spring@Configuration 주석이 달린 클래스를 등록하는 방법은 무엇입니까? (0) | 2023.09.03 |
젠드 프레임워크 폼 해시(토큰)를 AJAX와 함께 사용하는 방법 (0) | 2023.09.03 |
데이터베이스의 자격 증명을 어디에 보관해야 합니까? (0) | 2023.09.03 |
Node.js의 약속 이해 (0) | 2023.09.03 |