ASP.NET Core 에서 어떻게 CORS 크로스 도 메 인 을 실현 하 는 지 이야기 합 니 다.

CORS(Cross-origin resource sharing)는 W3C 기준 으로 번역 하면'크로스 도 메 인 자원 공유'이 고 주로 Ajax 크로스 도 메 인 제한 문 제 를 해결 하 는 것 입 니 다.
CORS 는 브 라 우 저 와 서버 지원 이 필요 합 니 다.현재 모든 현대 브 라 우 저 는 이 기능 을 지원 합 니 다.주:IE 10 및 이상
브 라 우 저가 지원 하기 만 한다 면,사실 CORS 의 모든 설정 은 서버 에서 이 루어 지고,전방 의 조작 브 라 우 저 는 자동 으로 완 료 됩 니 다.
이 예 에 서 는 ASP.NET Core 에서 CORS 크로스 도 메 인 을 실현 하 는 방법 을 보 여 줍 니 다.
전기 준비
windows 시스템 이 필요 합 니 다.
IIS 를 설치 해 야 합 니 다.
VS 2015 Update 3 또는 업 데 이 트 된 버 전 으로 이 예 를 완성 하 는 것 을 추천 합 니 다.다운로드 주소:https://www.jb51.net/softjc/446184.html
.NET Core 를 설치 하 는 개발 환경 이 필요 합 니 다.여기 서 VS 버 전 을 제공 합 니 다.https://www.jb51.net/softs/472362.html
프로젝트 생 성
VS 에서 새 항목 을 만 들 때,항목 유형 은 ASP.NET Core Web Application(.NET Core)을 선택 하고,항목 이름 은 CSASPNETCoreCORS,Template 는 Empty 를 선택 합 니 다.


서버 설정
주:아래 코드 를 추가 할 때 IDE 는 코드 오 류 를 알려 줍 니 다.이것 은 해당 하 는 가방 을 인용 하지 않 았 기 때 문 입 니 다.잘못된 줄 에 들 어가 전 구 를 클릭 하고 해당 하 는 가방 을 불 러 오 면 됩 니 다.
(그림 과 글 은 무관)
Startup.cs 열기
Configure Services 에 다음 코드 를 추가 합 니 다:

services.AddCors();
Configure 방법 에 다음 코드 를 추가 합 니 다:

app.UseCors(builder => builder.WithOrigins(http://localhost));
전체 코드 는 다음 과 같 아야 합 니 다:

public void ConfigureServices(IServiceCollection services)
{
  services.AddCors();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
  app.UseCors(builder => builder.WithOrigins("http://localhost"));
  app.Run(async (context) =>
  {
    await context.Response.WriteAsync("Hello World!");
  });
}

자,실행 합 시다.
출력 결 과 는 매우 간단 합 니 다.브 라 우 저 에서 Hello World 를 볼 수 있 습 니 다!
브 라 우 저 엔 드
도 메 인 을 뛰 어 넘 는 이상 우 리 는 두 개의 도 메 인 이름 을 사용 해 야 한다.위 에 우 리 는 이미 하 나 를 가지 고 있다.이런 것 과 유사 하 다.http://localhost:1661/
다음은 IIS 로 다른 하 나 를 만 들 었 습 니 다.
글 의 간결 함 을 위해 서 는 IIS 에 사 이 트 를 만 드 는 방법 을 알 고 있다 고 가정 합 니 다.의문 이 있 으 면 인터넷 에 답 이 쌓 여 있 습 니 다.
우선 폴 더 를 새로 만 들 고 IIS 기본 localhost 사이트 의 루트 디 렉 터 리 를 이 폴 더 에 가 리 킵 니 다.
이 폴 더 에 index.html 파일 을 추가 합 니 다.
내용 은 이렇게 해 야 한다.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
  <script>
    $.get("http://localhost:1661/", {}, function (data) {
      alert(data);
    }, "text");
  </script>
</body>
</html>
주:요청 한 주 소 는 이전 프로젝트 의 디 버 깅 주 소 를 입력 해 야 합 니 다.이 글 을 작성 할 때 제 프로젝트 의 디 버 깅 주 소 는?http://localhost:1661/,구체 적 으로 는 자신의 상황 을 기준 으로 한다.
localhost 이 사 이 트 를 방문 하면 js 는 다른 도 메 인 이름 의 주 소 를 요청 하고 반환 값 을 팝 업 합 니 다.
ajax 요청 을 할 때 브 라 우 저 는 Ajax 가 도 메 인 을 뛰 어 넘 기 를 요청 하 는 것 을 발견 하면 추가 헤더 정 보 를 자동 으로 추가 하고 대상 서버 에 요청 합 니 다(도 메 인 이름 이 있 을 것 입 니 다).대상 서버 는 도 메 인 이름 이 도 메 인 을 뛰 어 넘 을 수 있 는 도 메 인 이름 열 에 있 는 지 확인 하고 있 으 면 요청 결 과 를 되 돌려 줍 니 다.그렇지 않 으 면 실 패 했 습 니 다.
그룹 정책 및 MVC
상례 는 기본 적 인 설정 방법 일 뿐 입 니 다.다음은 좀 더 고 급 스 러 운 방식 을 보 여 드 리 겠 습 니 다.다음은 그룹 정책 과 MVC 와 의 통합 을 보 여 드 리 겠 습 니 다.
Startup.cs•Configure Services 중

services.AddCors(options =>
{
  options.AddPolicy("AllowSpecificOrigin", builder =>
  {
    builder.WithOrigins("http://localhost", "https://www.microsoft.com");
  });
  options.AddPolicy("AllowSpecificOrigin1", builder =>
  {
    builder.WithOrigins("http://localhost:8080", "https://www.stackoverflow.com");
  });
});
services.AddMvc();
구성 중

app.UseMvc();
전체 코드 는 다음 과 같 아야 합 니 다:

public void ConfigureServices(IServiceCollection services)
{
  services.AddCors(options =>
  {
    options.AddPolicy("AllowSpecificOrigin", builder =>
    {
      builder.WithOrigins("http://localhost", "https://www.microsoft.com");
    });
  });

  services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
  app.UseMvc();
}

이제 저희 가 컨트롤 러 를 추가 하 겠 습 니 다.
프로젝트 에 디 렉 터 리 Controllers 를 추가 하고 APIController 를 추가 합 니 다.이름 은 HomeAPIController.cs 입 니 다.
그 내용 은 다음 과 같 을 것 이다.

//[EnableCors("AllowSpecificOrigin")]
[Route("api/[controller]")]

public class HomeAPIController : Controller
{
  [EnableCors("AllowSpecificOrigin")]
  [HttpGet]
  public string Get()
  {
    return "this message is from another origin";
  }

  [DisableCors]
  [HttpPost]
  public string Post()
  {
    return "this method can't cross origin";
  }
}

[Enablecors("AllowSpecificOrigin")]이 controller 나 action 에서 어떤 그룹 정책 을 적용 할 지 설정 합 니 다.
[Disablecors]는 이 controller 나 action 을 위해 도 메 인 자원 요청 을 허용 하지 않 습 니 다.
브 라 우 저 단 html 개조
localhost 사이트 의 index.html 를 수정 합 니 다.내용 은 다음 과 같 습 니 다.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<script>
  $.get("http://localhost:1661/API/HomeAPI", {}, function (data) {
    alert(data);
  }, "text");
</script>
</body>
</html>
디 버 깅
F5 디 버 깅 서버 항목 은 404 페이지 를 볼 수 있 습 니 다.기본 경로 에 페이지 가 없 기 때문에 신경 쓰 지 않 고 탐색 할 수 있 습 니 다.http://localhost요청http://localhost:1661/API/HomeAPI,그리고 반환 값 을 팝 업 합 니 다.http://localhost:1661/API/HomeAPI요청 이 차단 된다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기