我想启用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标头,如果可以,怎么办?