ASP.NET Core 에서 어떻게 CORS 크로스 도 메 인 을 실현 하 는 지 이야기 합 니 다.
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요청 이 차단 된다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.