Angular POST 및 .NET Core 웹 API-401 권한없는 오류 / CORS

сосНиЛа

프런트 엔드 (Angular)와 백 엔드 (.NET Core WEB Api)에 대한 별도의 프로젝트가 있습니다. CORS와 Windows AD 인증을 설정했습니다. 모든 것이 GET 호출에서 잘 작동하지만 POST에 문제가 있습니다. 다음과 같은 오류가 발생합니다.

OPTIONS http://localhost:50000/api/data/Update 401 (Unauthorized)
Access to XMLHttpRequest at 'http://localhost:50000/api/data/Update' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Error: Http failure response for http://localhost:50000/api/data/Update: 0 Unknown Error

user.component.ts

update(data: NgForm) {
if (data.form.valid) {
  this.service.update(data.value)
    .subscribe(
      res => {
        console.log('Result: ' + res);
      },
      err => {
        console.log('Error: ' + err.message);
    });
  }
}

service.ts

headerOptions = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded', 'Access- 
Control-Allow-Origin': '*' });

update(data: Form) {
  return this.http.post(this.apiUrl + '/data/Update', data, { headers: this.headerOptions });
}

제어 장치

[HttpPost("[action]")]
public string Update([FromForm] User data)
  {
    if (data != null)
  {
    return "Ok";
  }
    else
  {
    return "Data is null";
  }
}

CORS 확장

    public static void ConfigureCors(this IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy", 
                builder => builder
                .WithOrigins("http://localhost:4200")
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });
    }

또한 모든 호출에 대해 "withCredentials : true"를 보내는 Angular 내부에 인터셉터가 있습니다.

내 모든 GET 호출이 문제없이 작동한다는 점을 명심하십시오. POST에만 문제가 있습니다. Angular 측의 메서드를 POST에서 GET으로 변경하면 백엔드의 Update 메서드가 문제없이 호출됩니다.

сосНиЛа

다음 변경 사항을 수행 한 후 컨트롤러 및 POST 데이터를 칠 수있었습니다.

  1. 컨트롤러 속성을 "FromForm"에서 "FromBody"로 변경했습니다 (Daniel의 설명 덕분에).
  2. 앵귤러 포스트 방식을 다음과 같이 변경

     headerOptions = new HttpHeaders({ 'Content-Type': 'application/json' 
     });
    
     update(data) {
     return this.http.post(this.apiUrl + '/data/Update', JSON.stringify(data), { 
     headers: this.headerOptions });
     }
    
  3. 내 launchSettings.json에서 "anonymousAuthentication : true"를 설정합니다.

  4. 이 단계에서는 응용 프로그램 시작시 사용자가 null이기 때문에 문제가 발생했기 때문에 앱 시작시 인증되지 않은 사용자를 처리하기 위해이 질문 ntlm anon 에서 찾은 새로운 미들웨어를 구현해야했습니다 .

  5. Configure (Startup.cs) 내에서 미들웨어를 호출하고 주문에주의를 기울이십시오. 다음은 내 것입니다.

    app.UseCors("CorsPolicy");
    app.UseAnonMiddleware();
    app.UseAdMiddleware();
    app.UseMvc();

그리고 그게 다야.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

asp.net mvc 401 리디렉션 후 권한이없는 오류

분류에서Dev

JWT 토큰은 항상 401 .net Core 3.1 웹 API를 반환합니다.

분류에서Dev

ASP.NET Core 웹 API 및 역할 권한 부여

분류에서Dev

.NET Core 및 Angular Client를 사용하여 활성화 한 후에도 CORS 오류가 계속 발생합니다.

분류에서Dev

Angular 7 및 .NET Core API에서 지원되지 않는 미디어 유형 415 오류

분류에서Dev

JWT 토큰 오류 401 Unauthorized in .net core 3.1

분류에서Dev

Angular MSAL AD 401은 Angular 앱에서 권한이 없지만 Postman에서는 200 Ok-ASP.NET Core Web API

분류에서Dev

게시 할 때 404 오류를 반환하는 Blazor ASP.Net Core 3.1 웹 API

분류에서Dev

Angular 9 및 .NET Web Api-http.post 요청으로 CORS 문제를 해결하는 방법

분류에서Dev

ASP.NET Core 2.2 웹 API Angular. 호스팅 제공 업체에 500이라고 표시됨-내부 서버 오류

분류에서Dev

.Net Core 웹 API에 POST XML

분류에서Dev

오류 401 받기-Google API에 권한이 없음

분류에서Dev

Kubernetes 클라이언트 Python API 오류 401-권한 없음

분류에서Dev

Asp.net Core 및 Angular 7 Cors

분류에서Dev

ASP.NET Core 웹 API-JWT 메시지 처리기-등록 된 형식 오류 없음

분류에서Dev

.Net 5 웹 API CORS LocalHost

분류에서Dev

PUT / POST 수행시 HTTP 리소스 오류 없음 [CORS 문제-AngularJS + Web API 2]

분류에서Dev

웹 API 사용시 401 권한 부여 필요 오류

분류에서Dev

Solr HTTP 오류 : 권한 없음 (401)

분류에서Dev

Solr HTTP 오류 : 권한 없음 (401)

분류에서Dev

BASIC 인증을 사용하는 .net 웹 API 401 오류에 대한 .net 웹 실행 파일

분류에서Dev

Angular 및 Devise 권한 오류

분류에서Dev

Angular POST 및 웹 API

분류에서Dev

(CORS 오류) Angular에서 ASP.net REST 서비스로 POST 요청을 보낼 수 없습니다 (OPTIONS가 거부 됨).

분류에서Dev

MVC 및 웹 API 오류 처리 혼합

분류에서Dev

Twitter API 용 Python Tweepy가 '오류 401 : 권한 없음'을 반환합니다.

분류에서Dev

ASP.NET Web API 2 및 Owin을 사용하는 토큰 기반 인증에서 401 권한이 없음

분류에서Dev

Angular 2 및 .NET Core Web Api HttpPost 문제

분류에서Dev

웹 앱에서 웹 API를 사용하는 .Net Core

Related 관련 기사

  1. 1

    asp.net mvc 401 리디렉션 후 권한이없는 오류

  2. 2

    JWT 토큰은 항상 401 .net Core 3.1 웹 API를 반환합니다.

  3. 3

    ASP.NET Core 웹 API 및 역할 권한 부여

  4. 4

    .NET Core 및 Angular Client를 사용하여 활성화 한 후에도 CORS 오류가 계속 발생합니다.

  5. 5

    Angular 7 및 .NET Core API에서 지원되지 않는 미디어 유형 415 오류

  6. 6

    JWT 토큰 오류 401 Unauthorized in .net core 3.1

  7. 7

    Angular MSAL AD 401은 Angular 앱에서 권한이 없지만 Postman에서는 200 Ok-ASP.NET Core Web API

  8. 8

    게시 할 때 404 오류를 반환하는 Blazor ASP.Net Core 3.1 웹 API

  9. 9

    Angular 9 및 .NET Web Api-http.post 요청으로 CORS 문제를 해결하는 방법

  10. 10

    ASP.NET Core 2.2 웹 API Angular. 호스팅 제공 업체에 500이라고 표시됨-내부 서버 오류

  11. 11

    .Net Core 웹 API에 POST XML

  12. 12

    오류 401 받기-Google API에 권한이 없음

  13. 13

    Kubernetes 클라이언트 Python API 오류 401-권한 없음

  14. 14

    Asp.net Core 및 Angular 7 Cors

  15. 15

    ASP.NET Core 웹 API-JWT 메시지 처리기-등록 된 형식 오류 없음

  16. 16

    .Net 5 웹 API CORS LocalHost

  17. 17

    PUT / POST 수행시 HTTP 리소스 오류 없음 [CORS 문제-AngularJS + Web API 2]

  18. 18

    웹 API 사용시 401 권한 부여 필요 오류

  19. 19

    Solr HTTP 오류 : 권한 없음 (401)

  20. 20

    Solr HTTP 오류 : 권한 없음 (401)

  21. 21

    BASIC 인증을 사용하는 .net 웹 API 401 오류에 대한 .net 웹 실행 파일

  22. 22

    Angular 및 Devise 권한 오류

  23. 23

    Angular POST 및 웹 API

  24. 24

    (CORS 오류) Angular에서 ASP.net REST 서비스로 POST 요청을 보낼 수 없습니다 (OPTIONS가 거부 됨).

  25. 25

    MVC 및 웹 API 오류 처리 혼합

  26. 26

    Twitter API 용 Python Tweepy가 '오류 401 : 권한 없음'을 반환합니다.

  27. 27

    ASP.NET Web API 2 및 Owin을 사용하는 토큰 기반 인증에서 401 권한이 없음

  28. 28

    Angular 2 및 .NET Core Web Api HttpPost 문제

  29. 29

    웹 앱에서 웹 API를 사용하는 .Net Core

뜨겁다태그

보관