【发布时间】:2019-04-24 12:54:27
【问题描述】:
我在为使用 Google App Engine 和柔性环境托管的 ASP.NET CORE 应用程序启用 CORS 支持时遇到问题。
使用 axios 库的每个 AJAX 请求都会导致以下错误...
在“https://api.[something].services/request”访问 XMLHttpRequest 来自原点“http://localhost:8080”已被 CORS 策略阻止: 请求中不存在“Access-Control-Allow-Origin”标头 资源。
这里是web api上CORS的配置:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
options.AddPolicy("MyPolicy",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
}));
// ...
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
System.Environment
.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS",
Path.Combine(Directory.GetCurrentDirectory(),
Configuration["GAE:Credentials"]));
}
else
{
app.UseHsts();
}
// ...
app.UseCors("MyPolicy");
app.UseHttpsRedirection();
app.UseMvc();
}
【问题讨论】:
-
响应的 HTTP 状态码是什么?
-
确保
app.UseCors("MyPolicy")位于您定义的任何 API 端点之前(即,如果// ...部分定义了任何端点,请将UseCors移到其上方)。如果您将EnableCors 属性添加到特定控制器或操作,还可以查看结果是否发生变化。
标签: google-app-engine asp.net-web-api asp.net-core cors axios