. NET Core Web API 에서 CORS 에 OPTIONS 레이 블 을 사용 합 니 다.

2881 단어 일상 고생
dotnet core 웹 api 에서 CORS (크로스 도 메 인 접근) 지원
질문 설명:
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 방법 을 열 고 설정 이 완료 되 었 습 니 다.
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기