【解決方法】Web API .NET 6を使用したクロスオリジンAngular 14は、認証されたユーザーを取得します

プログラミングQA

[ad_1]

こんにちは、

angularを介して.net 6によって認証されたウィンドウを取得しようとすると、エラーが発生します。
オリジン ‘http://localhost:4200’ からの XMLHttpRequest へのアクセスが CORS ポリシーによってブロックされました: 応答の ‘Access-Control-Allow-Origin’ ヘッダーの値は、ワイルドカード ‘*’ であってはなりませんリクエストのクレデンシャル モードが「include」の場合。 XMLHttpRequest によって開始されたリクエストの資格証明モードは、 withCredentials 属性によって制御されます。

私が試したこと:

私のコード:
角度:

<pre lang="TypeScript">
update(user: User) {
        const headers = new HttpHeaders().set('Content-Type', 'application/json');
        
              return this.httpClient.post(this.url + "/UpdateUser",JSON.stringify(user), {headers: headers, withCredentials: true})
    }

HttpInterceptor:

TypeScript
<pre>import { Injectable } from '@angular/core';
import {
  HttpEvent, HttpInterceptor, HttpHandler, HttpRequest
} from '@angular/common/http';
import { Observable } from 'rxjs';
/** Inject With Credentials into the request */
@Injectable()
export class HttpRequestInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler):
    Observable<HttpEvent<any>> {
    
      // console.log("interceptor: " + req.url);
      req = req.clone({
        withCredentials: true
      });
      
      return next.handle(req);
  }
}

ウェブ API:
プログラム.cs:

C#
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddAuthorization(options =>
{
    // By default, all incoming requests will be authorized according to the default policy.
    options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}



app.UseCors(x => //x.SetIsOriginAllowed(x => x.StartsWith("http:\\localhost:4200"))
    x.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

コントローラ:

C#
[HttpPost]
[Route("UpdateUser")]
public async Task<bool> UpdateUser(
    [FromBody] User user)
{
    IPrincipal p = HttpContext.User;
    var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value;

    return await _service.UpdateUser(user.userID);
}

助けてくれてありがとう

解決策 1

これは 26 分前に YouTube で公開されたものです。 ASP.NET Core C# で CORS を理解する – YouTube[^]. アントンはとても良いです。

[ad_2]

コメント

タイトルとURLをコピーしました