在AWS API Gateway中为ASP.NET Core API启用具有动态Origina标头值的CORS

时间:2019-04-29 22:21:04

标签: asp.net amazon-web-services asp.net-core cors aws-api-gateway

我想启用cors,同时为Access-Control-Allow-Origin提供动态值,以便它可以支持多个域,但仍然不能跨域访问。这是AWS Lambda托管的ASP.NET Core函数,可通过API Gateway调用。

我在services.AddCors();函数中添加了ConfigureServices,这是我在Configure中的Startup函数:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
        app.UseDeveloperExceptionPage();
    else
        app.UseHsts();

    app.UseHttpsRedirection();

    Microsoft.Extensions.Primitives.StringValues referrer = "";
    app.Use((context, next) =>
    {
        context.Request.Headers.TryGetValue("Referer", out referrer);
        return next();
    });
    app.UseCors(options => options.AllowAnyHeader().AllowAnyMethod().WithOrigins(referrer.ToString()));

    app.UseMvc();
}

然后我去打了API Gateway中的Enable CORS,我用integration.response.header.Access-Control-Allow-Origin替换了allow origin标头的'*'值,好像在https://docs.aws.amazon.com/apigateway/latest/developerguide/request-response-data-mappings.html中一样

那没有用,所以我认为是因为它使用了Mock集成,并将集成更改为与我的lambda函数配合使用,并返回了404错误。

(我还尝试将HttpOptions属性添加到控制器中的函数中,但该方法也不起作用)。

是否可以让API网关将函数本身的值用作其CORS标头,如果可以,怎么办?

0 个答案:

没有答案