2016-06-07 4 views
1

CORS를 asp.net 웹 API에서 설정하려고합니다. 내 WebApiConfig.cs은 다음과 같습니다CORS 및 ASP.Net 웹 API

namespace WebApplication2.Controllers 
{ 
public class BootStrapController : ApiController 
{ 
    public void Options(string locale, string deviceType) 
    { 
     string origin = HttpContext.Current.Request.Headers.Get("Origin") ??          ""; 
     HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", origin); 
     HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Methods", HttpContext.Current.Request.Headers["Access-Control-Request-Methods"]); 
     HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Headers", HttpContext.Current.Request.Headers["Access-Control-Request-Headers"]); 
     HttpContext.Current.Response.End(); 
    } 
    public object Get(string locale, string deviceType) 
    { 
     string origin = HttpContext.Current.Request.Headers.Get("Origin") ?? ""; 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", origin); 

그러나, 나는 서버 응답의 모든 액세스 제어 또는 추가 헤더가없는 : 나는 또한 내 컨트롤러에 헤더를 추가 한

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web.Http; 
using System.Web.Http.Controllers; 
using System.Web.Http.Cors; 
using System.Web.Http.Routing; 

namespace WebApplication2 
{ 
public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 
     var cors = new EnableCorsAttribute("http://localhost", "*", "*"); 

     config.EnableCors(cors); 
     config.Routes.MapHttpRoute(
      name: "bootstrap", 
      routeTemplate: "abp/{controller}" 
     ); 
    } 
} 
} 

. 더 자세한 정보가 필요하면 알려주십시오.

답변

1

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api을 참조하십시오. WebAPI에서 CORS를 구현하기위한 완전한 안내서를 얻을 수 있습니다.

는 UPDATE : 가 WEBAPI에서 CORS를 구현하려면 다음 단계에 따라하십시오

  1. 이 솔루션에 CORS NuGet 패키지를 추가합니다. Visual Studio의 도구 메뉴에서 라이브러리 패키지 관리자을 선택한 다음 패키지 관리자 콘솔을 선택합니다. 패키지 관리자 콘솔 창에서 다음 명령을 입력
    는-패키지 설치 Microsoft.AspNet.WebApi.Cors

  2. 파일을 엽니 다 App_Start/WebApiConfig.cs. WebApiConfig에 다음 코드를 추가하십시오. 메서드를 등록하십시오.

    [EnableCors(origins: "*", headers: "*", methods: "*")] 
    public class BootStrapController : ApiController 
    { 
        // Controller methods 
    } 
    

    기원 헤더 및 방법이 필요에 따라 변할 수있다 :

    public static class WebApiConfig 
    { 
        public static void Register(HttpConfiguration config) 
        { 
        // New code 
        config.EnableCors();  
        } 
    } 
    
  3. 다음에,이 [EnableCors 상기 BootStrapController 클래스 속성에 추가한다.

+0

답변에 대한 자세한 내용을 입력하십시오. 링크 만 대답하는 것은 좋지 않습니다. 링크가 끊어진 경우 응답이 무효화됩니다. – Yogi

0

이전의 대답은 정확하지만 당신은 모든 컨트롤러에 CORS를 사용하려는 경우, 당신은 정말 쉬운 방법으로 그렇게 할 수는 Register 방법의 내부는 WebApiConfig 클래스에 다음 두 줄을 추가 :

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // These next two lines enables CORS for all controllers 
     var cors = new EnableCorsAttribute("*", "*", "*"); 
     config.EnableCors(cors); 
    } 
}