2014-10-16 3 views
4

FireFox 및 Chrome에서 CORS를 활성화하는 방법을 알려주십시오. WebAPi는 인터넷에서는 잘 작동하지만 Chrome/Firefox에서는 제대로 작동하지 않습니다.WebAPi - Firefox 및 Chrome의 CORS

이것은 내가 파이어 폭스 콘솔에 들어있는 것입니다.

원본 출처 요청이 차단됨 : 동일한 출처 정책으로 원격 리소스를 읽는 것이 허용되지 않습니다 (http://localhost:51/api/abcservice/M2). 자원을 동일한 도메인으로 이동 시키거나 CORS를 사용 가능하게하면이 문제를 해결할 수 있습니다.

미리 감사드립니다.

답변

3

CORS는 브라우저에 종속적이지 않으므로 서버 측에서 사용해야합니다.

CORS WebApi NuGet 패키지를 설치

Install-Package Microsoft.AspNet.WebApi.Cors 

그런 다음 응용 프로그램에서 시작 : 귀하의 요청이 예외가 발생할 때

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // CORS 
     config.EnableCors(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 
웹 API와

Source

+0

감사 플로리안를,이 모든으로 장식 컨트롤러를 포함하여 수행된다 EnableCors (기원 : "*", 헤더 : "*"방법 : "*")]. 그러나 운이 없다. – Abhishek

+0

*에서 시작하셨습니까? –

+0

EnableCors()에 대한 매개 변수를 지정해야합니다. 그렇지 않으면 서버가 기본값 (가능한 null)을 취합니다. 변수 아래에 추가 한 후 컨트롤러 수준에서 구성하지 않고 전역으로 작동합니다. config.EnableCors (새로운 EnableCorsAttribute ("*", "*", "GET, POST, PUT, DELETE, OPTIONS"))); – yancyn

0

는, 언젠가는 CORS 오류가 서버 측에서는 웹 API 컨트롤러에서 요청을 디버그하고 원본 헤더가 응답으로 설정되어 있는지 다시 한 번 확인하십시오.

0

가능성이없는 IE와 Edge, Chrome 및 Firefox는 각 GET 또는 POST 전에 OPTIONS 요청을 추가로하기 때문에 global.asax에서 명시 적으로 해당 속성을 구성해야합니다. 이 코드를보십시오 :

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
     HttpContext.Current.Response.AddHeader("access-control-allow-origin", "*"); 

     if (HttpContext.Current.Request.HttpMethod == "options") 
     { 
      HttpContext.Current.Response.AddHeader("access-control-allow-methods", "post, put, delete, get"); 
      HttpContext.Current.Response.AddHeader("access-control-allow-headers", "content-type, accept"); 
      HttpContext.Current.Response.AddHeader("access-control-max-age", "1728000"); 
      HttpContext.Current.Response.End(); 
     } 
} 
관련 문제