提问者:小点点

ASP.NET核心AWS无服务器和CORS


我正在使用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对吗?)这正是发布时似乎被忽略的内容。


共1个答案

匿名用户

无论出于什么原因,app. UseCors在我的场景中不起作用。但是,app.use确实…

app.Use((context, next) =>
{
    context.Response.Headers["Access-Control-Allow-Origin"] = "https://example.com";
    return next.Invoke();
});

app.UseMvc();