我正在使用Visual Studio发布一个ASP.NETCore 2.1应用程序来AWSLambda(无服务器)。无论我尝试过什么,我都无法CORS工作。
我真正想做的就是在我的Web应用程序中全局添加标头access-control-allo-源
。
是否有人曾成功将标头添加到ASP.NETCore 2.1 Serverless应用程序?
启动. cs
public void ConfigureServices(IServiceCollection services)
{
// AddCors must be before AddMvc
services.AddCors();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// UseCors must be before UseMvc
app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
);
// Also tried this
// app.UseCors(
// o => o.WithOrigins("http://example.com").AllowAnyMethod()
//);
app.UseMvc();
}
没有CORS标题添加到我的页面。我正在使用Chrome开发工具来检查我的标题。我应该在主页上看到它们(例如)对吗?
有什么想法吗?我快死了。谢谢。
编辑
这个应用程序只使用API网关、Lambda和其他一些服务。这很棒,因为我只有在有人点击我的应用程序时才收费。没有小时收费。没有EC2或ELB,这太棒了。
此外,我差点把这个添加到我的原始帖子中。文章@sturcott te06参考有一个问题。
API网关(自动生成)在代理集成中使用ANY方法。上面的文章说这…
重要
将上述说明应用于代理集成中的ANY方法时,不会设置任何适用的CORS标头。相反,您的后端必须返回适用的CORS标头,例如Access-Control-Allow-Origin。
啊!所以它说我必须在后端执行此操作(Startup. cs对吗?)这正是发布时似乎被忽略的内容。
无论出于什么原因,app. UseCors在我的场景中不起作用。但是,app.use确实…
app.Use((context, next) =>
{
context.Response.Headers["Access-Control-Allow-Origin"] = "https://example.com";
return next.Invoke();
});
app.UseMvc();