Igo*_*ova 13 c# .net-core blazor
我已经在C#.net Core中的项目上启用了CORS
在startup.cs我添加行
...
services.AddCors();
...
app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在另一个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;
}
Run Code Online (Sandbox Code Playgroud)
在启用Cors之前,我在浏览器控制台中看到另一个错误
我可以为解决该问题做出哪些改变?
小智 75
我有同样的问题,我删除了AllowCredentials()它为我解决了这个问题。
Con*_*sky 43
有点晚了,但我希望它可以对某人有所帮助。
如果你想AllowCredentials()和AllowAnyOrigin()一起使用SetIsOriginAllowed(Func<string,bool> predicate)
services
.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
);
options.AddPolicy("signalr",
builder => builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.SetIsOriginAllowed(hostName => true));
});
Run Code Online (Sandbox Code Playgroud)
Kur*_*tyo 38
我也遇到了同样的问题,我在这里找到了解决方案:
像这样在 startup.cs 文件中更改 CORS 设置
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
}
Run Code Online (Sandbox Code Playgroud)
这个对我有用。
Isa*_*aac 11
您应该已经提供了其余的代码...这是Blazor客户端应用程序还是Razor组件应用程序(正式称为服务器端Blazor)?我猜这是Blazor客户端应用程序,对吧?为什么要实例化HttpClient?您应该改用DI(也许是构造函数注入),注入Blazor本身提供的HttpClient实例。
问题可能出在服务器端,尽管它是作为客户端出现的。。。尝试以下操作:1.获取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());
});
.....
}
Run Code Online (Sandbox Code Playgroud)
和这个:
public void Configure(IApplicationBuilder app,
IHostingEnvironment env)
{
app.UseCors("CorsPolicy");
}
Run Code Online (Sandbox Code Playgroud)
再次注意:CORS需要在服务器端启用,而不能启用。有关如何在ASP.NET Core中启用CORS的详细信息,请参见https://docs.microsoft.com/zh-cn/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");
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
小智 8
您不能同时使用两者AllowAnyOrigin(),AllowCredentials()因此将代码更改为:
...
services.AddCors();
...
app.UseCors(builder => builder
.WithOrigins("https://example.com")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
Run Code Online (Sandbox Code Playgroud)
小智 8
步骤 1 安装 nuGet 包:
Microsoft.AspNetCore.Cors
步骤 2 添加
services.AddCors();
Run Code Online (Sandbox Code Playgroud)
在 Startup.cs 下的 ConfigureServices
第 3 步添加
app.UseCors(x => x
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true) // allow any origin
.AllowCredentials());
Run Code Online (Sandbox Code Playgroud)
在启动.cs 下配置
| 归档时间: |
|
| 查看次数: |
9066 次 |
| 最近记录: |