Ale*_*ora 5 c# .net-core ocelot
我在我的新项目中实现了 ocelot,我在一个点上与 ocelot 创建了我的服务集成,但是当我尝试在我的 api 网关中发布、放置、路径或删除资源时,浏览器会向我显示消息
无法加载http://localhost:8080/api/prospects:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“ http://localhost:8888 ”。响应的 HTTP 状态代码为 404。
我尝试在网关安装和实现包 Microsoft.AspNetCore.Cors 中配置 cors
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddOcelot(Configuration)
.AddCacheManager(x =>
{
x.WithMicrosoftLogging(log =>
{
log.AddConsole(Microsoft.Extensions.Logging.LogLevel.Debug);
})
.WithDictionaryHandle();
}); ;
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
app.UseCors(
options => options.WithOrigins("http://localhost:8888").AllowAnyMethod()
);
app.UseOcelot().Wait();
}
Run Code Online (Sandbox Code Playgroud)
这个问题与 Ocelot 无关,CORS 对于所有 .net core api 都是一样的
尝试首先像这样为 AnyOrigin 实现 CORS
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
services.AddMvc();
services.AddOcelot(Configuration);
}
Run Code Online (Sandbox Code Playgroud)
并在配置方法中添加这一行app.UseCors("CorsPolicy");
所以在那之后如果 CORS 有效,而不是.AllowAnyOrigin()添加.WithOrigins("yourdomain")并且它
有关详细信息,请参阅:https://learn.microsoft.com/en-us/aspnet/core/security/cors ?view=aspnetcore-2.2
| 归档时间: |
|
| 查看次数: |
10177 次 |
| 最近记录: |