. NET Core Web API 에서 CORS 에 OPTIONS 레이 블 을 사용 합 니 다.
2881 단어 일상 고생
질문 설명:
cors 를 미리 설정 해 야 합 니 다. cors 를 설정 한 후 get 이나 post (pain / text) 등 간단 한 유형 을 요청 할 수 있 습 니 다.
하지만
서버 에 대한 간단 하지 않 은 요청 이 필요 할 때, 예 를 들 어 context - type 이 json 일 때, 첫 번 째 는 option 방법 탐 사 를 보 내 고, 두 번 째 는 post 요청 을 정식으로 보 냅 니 다. webapi 가 option 방법 을 열지 않 았 기 때문에 전단 은 204 오류 (204 No Content) 를 받 고, post 도 보 내지 않 았 습 니 다.
해결 방법:
중간 에 option 방법 을 사용 하고 200 상태 코드 에 응답 합 니 다.
cors 설정, 구체 적 인 방법:
단계 1. startup. cs 의 Configure Services 방법 에 가입
services.AddCors(Options => Options.AddPolicy("543", p => p.AllowAnyOrigin()) );// 코드
// services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
STEP 2. startup. cs 의 Configure 방법 에 추가
app. UseCors ("543"); / 코드 는 화면 음악 앞 에 쓰 여 있 습 니 다.
//app.UseMvc();
cors 설정 완료.
option 방법 오픈, 구체 적 인 방법:
단계 1. Options Middleware. cs 클래스 만 들 기
단계 2. 들어가다
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace xxxxxxxxx
{
public class OptionsMiddleware
{
private readonly RequestDelegate _next;
public OptionsMiddleware(RequestDelegate next)
{
_next = next;
}
public Task Invoke(HttpContext context)
{
return BeginInvoke(context);
}
private Task BeginInvoke(HttpContext context)
{
if (context.Request.Method == "OPTIONS")
{
context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { (string)context.Request.Headers["Origin"] });
context.Response.Headers.Add("Access-Control-Allow-Headers", new[] { "Origin, X-Requested-With, Content-Type, Accept" });
context.Response.Headers.Add("Access-Control-Allow-Methods", new[] { "GET, POST, PUT, DELETE, OPTIONS" });
context.Response.Headers.Add("Access-Control-Allow-Credentials", new[] { "true" });
context.Response.StatusCode = 200;
return context.Response.WriteAsync("OK");
}
return _next.Invoke(context);
}
}
public static class OptionsMiddlewareExtensions
{
public static IApplicationBuilder UseOptions(this IApplicationBuilder builder)
{
return builder.UseMiddleware();
}
}
}
STEP 3. startup. cs 의 Configure 방법 에 추가
app. UseOptions (); / / 방법 이 시작 되 는 위치 에 추가 하고 다른 위 치 는 테스트 하지 않 았 습 니 다.
option 방법 을 열 고 설정 이 완료 되 었 습 니 다.