무엇을 놓치고 있는지 잘 모르겠지만 CORS 정책이 .NET Core 3.1 및 Angular 8 클라이언트 측에서 작동하지 않는 것 같습니다.
Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
// Add CORS policy
services.AddCors(options =>
{
options.AddPolicy("foo",
builder =>
{
// Not a permanent solution, but just trying to isolate the problem
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
// Use the CORS policy
app.UseCors("foo");
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
오류 메시지 클라이언트 측 :
Access to XMLHttpRequest at 'https://localhost:8082/api/auth/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
최신 정보:
내가 비록 한 잘못 CORS를 구성하는 (그리고 허용 대답은 아래 그와 실제로 도움에서했던) 문제의 근본는 무관했다. 추가 컨텍스트의 경우 CLI를 사용하여 API 및 Angular 앱을 실행할 때 앱이 완벽하게 작동했습니다. 웹 서버에 모두 배포 한 후에 만이 문제가 발생했습니다.
"실제" 문제는 내가 단지 API에 플랫 파일 오류 로깅을 추가하고 앱이 모든에 SQL에 연결할 수 없음을 찾기 위해 SQL Server 추적을 실행 한 후 발견 된 SQL 연결에 관련된 었죠.
나는 보통 이것이 500을 반환 할 것으로 예상하고 10 초 만에 문제를 깨달았을 것이다. 그러나 CORS의 잘못된 설정은 CORS 미들웨어가 먼저 실패했기 때문에 500이 실제로 반환되지 않았 음을 의미한다. 이것은 절대적으로 말하기를 매우 좌절했습니다! . 그러나 만약 당신이 원한다면 "잘못된 토끼를 쫓고"있었기 때문에 다른 사람들이 이런 상황에 처할 경우를 대비하여 여기에 추가하고 싶습니다. CORS 구성을 수정 한 후 실제 문제는 CORS와 전혀 관련이 없음을 깨달았습니다.
TL; DR; -CORS 정책이 올바르게 설정되지 않은 경우 "Non-CORS".NET 서버 측 오류가 CORS 오류로 반환 될 수 있음
참고 문헌 :
https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785
app.UseCors("foo");
전에 설정을 시도app.UseHttpsRedirection();