【发布时间】:2020-10-07 13:48:42
【问题描述】:
我正在尝试在我的 ASP.NET Core Web API 中实施 CORS 策略。
我的 Startup.cs 文件如下:
public void ConfigureServices(IServiceCollection services)
{
options.AddPolicy("AllowSpecificOrigin", builder => builder.WithOrigins("https://google.com")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin());
services.AddMvc()
.AddApplicationPart(Assembly.Load(new AssemblyName("Proxy.Api.Application")))
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.WriteIndented = true;
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseCors("AllowSpecificOrigin");
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
我还在下面添加了控制器方法装饰器属性:
[EnableCors("AllowSpecificOrigin")]
public Task<IActionResult> GetProxy([FromQuery] ProxyParams inputRequest)
{
....
}
现在据我了解,这一行:
options.AddPolicy("AllowSpecificOrigin", builder => builder.WithOrigins("https://google.com")
将只允许https://google.com 域使用 EnableCors 属性装饰器访问我的控制器方法。
但是,当我通过 curl 或 fiddler 在本地调用 API 端点时,该方法仍然被命中并返回 200。我错过了什么?我检查了几个帖子,但我有点卡住了。
【问题讨论】:
-
我的应用在开发环境中运行良好,但在生产环境中却不行。我想知道你是否解决了这个问题?
标签: c# asp.net asp.net-core .net-core