C#.net Coreのプロジェクトで既にCORSを有効にしました
startup.cs
行を追加しました
...
services.AddCors();
...
app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
しかし、別のBlazor
プロジェクトでAPIを使用しようとすると、HostのAPIプロジェクトのログにこのエラーが表示されます
CORSプロトコルでは、ワイルドカード(任意)の発信元と資格情報を同時に指定することはできません。資格情報をサポートする必要がある場合は、個々のオリジンをリストしてポリシーを構成します
Blazor
の私のコード
using (HttpClient http = new HttpClient()) {
http.DefaultRequestHeaders.Add("Authorization", "Token");
var response = await http.GetStringAsync("https://example.com?prm=2");
Console.WriteLine(response);
dynamicContent = response;
}
Corsを有効にする前に、ブラウザコンソールに別のエラーが表示されます
それを解決するために何を変更できますか?
コードの残りの部分を提供する必要があります...これはBlazorクライアントアプリケーションまたはRazorコンポーネントアプリケーション(正式にはサーバー側Blazorとして知られています)ですか?これはBlazorクライアントアプリケーションだと思いますよね?なぜHttpClientをインスタンス化するのですか?代わりに、DI(おそらくConstructor Injection)を使用して、Blazor自体が提供するHttpClientインスタンスを注入する必要があります。
問題はおそらくサーバー側にありますが、クライアント側に見えますが...次を試してください:1. Get https://www.nuget.org/packages/Microsoft.AspNetCore.Cors/
2。
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
.....
}
この:
public void Configure(IApplicationBuilder app,
IHostingEnvironment env)
{
app.UseCors("CorsPolicy");
}
もう一度注意してください。CORSは、blazorではなく、サーバー側で有効にする必要があります。 ASP.NET CoreでCORSを有効にする方法の詳細については、 https://docs.Microsoft.com/en-us/aspnet/core/security/cors を参照してください。
ブレイザー:
@page "/<template>"
@inject HttpClient Http
@functions {
protected override async Task OnInitAsync()
{
var response= await Http.GetJsonAsync<string>
("https://example.com?prm=2");
}
}
お役に立てれば...
私は同じ問題を抱えていたので、allowCredentials()
を削除して、問題を修正しました。