Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# ASP.NET WebAPI에서 CORS 문제를 해결하는 방법은 무엇입니까?

<시간/>

교차 출처 리소스 공유 (CORS)는 추가 HTTP 헤더를 사용하여 브라우저에 한 출처에서 실행되는 웹 애플리케이션에 다른 출처에서 선택한 리소스에 대한 액세스 권한을 부여하도록 지시하는 메커니즘입니다. 웹 응용 프로그램은 원본(도메인, 프로토콜 또는 포트)이 다른 리소스를 요청할 때 원본 간 HTTP 요청을 실행합니다.

예를 들어 프런트 엔드(UI)와 백 엔드(서비스)가 있는 애플리케이션을 생각해 보겠습니다. 프런트 엔드가 https://demodomain-ui.com에서 제공된다고 가정해 보겠습니다. 백엔드는 https://demodomain-service.com/api에서 제공됩니다. 최종 사용자가 애플리케이션에 액세스하려고 하면 보안상의 이유로 브라우저가 UI에서 시작된 교차 출처 HTTP 요청을 제한합니다.

따라서 이를 극복하기 위해 CORS 표준이 필요합니다. 서버가 자산에 액세스할 수 있는 사람뿐만 아니라 자산에 액세스하는 방법도 지정할 수 있기 때문입니다. 표준 HTTP 요청 방법을 사용하여 원본 간 요청이 이루어집니다. 대부분의 서버는 GET 요청을 허용합니다. 즉, 외부 출처(예:웹 페이지)의 리소스가 자산을 읽을 수 있도록 허용합니다. HTTP는 PATCH, PUT 또는 DELETE와 같은 메소드를 요청합니다. 다음은 CORSstandard −

에 의해 추가된 HTTP 헤더입니다.
  • 접근-제어-허용-원본

  • 액세스 제어 허용 자격 증명

  • 액세스 제어 허용 헤더

  • 액세스 제어 허용 방법

  • 액세스-제어-노출-헤더

  • 액세스 제어-최대 연령

  • 액세스 제어 요청 헤더

  • 액세스 제어 요청 방법

  • 원산지

글로벌 수준에서 CORS 사용 -

첫 번째는 Microsoft.AspNet.WebApi.Cors를 설치하는 것입니다. Nuget 패키지 관리자에서.

그런 다음 App_Start/WebApiConfig.cs 파일을 엽니다. WebApiConfig.Register 메소드에 다음 코드를 추가하십시오 -

C# ASP.NET WebAPI에서 CORS 문제를 해결하는 방법은 무엇입니까?

컨트롤러 및 작업 수준에서 CORS 사용 -

아래와 같이 컨트롤러 또는 액션 메소드 수준에서 CORS를 활성화할 수도 있습니다.

using System.Web.Http;
using System.Web.Http.Cors;
namespace DemoWebApplication.Controllers{
   [EnableCors("*", "*", "*")] //Controller level
   public class DemoController : ApiController{
      [EnableCors("*", "*", "*")] //Action level
      public IHttpActionResult Get(int id){
         return Ok();
      }
   }
}

마찬가지로 [DisableCors] 속성을 사용하여 cors를 비활성화할 수 있습니다.