首页 > 解决方案 > 在 .NET Lambda API 中为 Swashbuckle swagger.json 启用 COR

问题描述

我有一个 .NET lambda API,我以前使用 Swashbuckle 生成一个 swagger.json 文件,该文件提供给外部站点使用。我现在正在尝试设置,以便 swagger.json 文件由 API 生成,并可通过外部站点的 url 提供给我们,即:mylambdaapi.com/swagger/v2/swagger.json。当按如下方式推送到 aws 时,我可以通过向我的模板添加一个虚拟事件来完成这项工作。

"SwaggerJson": {
  "Type": "Api",
  "Properties": {
    "Path": "/swagger/v2/swagger.json",
    "Method": "GET"
  }
}

这仅适用于正常访问文件,但是在尝试加载 json 时,外部站点将遇到 CORS“No 'Access-Control-Allow-Origin' header”问题。在这种情况下,有什么方法可以强制生成使用“Access-Control-Allow-Origin”?或者这种方式不可行?我正在研究另一个开发人员之前构建的东西,所以我尽量不重写每一个,但是我对另一种方法持开放态度,只要它能够产生一些外部站点可以使用的 swagger json。

编辑:我应该注意我正在使用 API 网关,悬停 swagger.json 仅用于外部站点的文档目的。

标签: asp.netaws-lambdacorsswaggerswashbuckle.aspnetcore

解决方案


尝试使用 UseCors() 功能,但没有奏效。我能够通过在 UseSwagger 之前添加一个匿名函数来处理响应来解决这个问题。

以下片段来自我启动时的配置功能。

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

app.UseSwagger();

推荐阅读