[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]
コメント