问题描述
我有一个.NET lambda API,以前我使用Swashbuckle生成一个swagger.json文件,该文件已提供给外部站点使用。我现在正在尝试进行设置,以便swagger.json文件由API生成,并且可以通过外部网站的网址向我们提供,例如:mylambdaapi.com/swagger/v2/swagger.json。如下所述,我可以通过向模板添加虚拟事件来使此工作正常进行。
static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
这仅用于正常访问文件,但是在尝试加载json时,外部站点将遇到CORS“无'Access-Control-Allow-Origin'标头”问题。在这种情况下,有什么方法可以强制生成使用“ Access-Control-Allow-Origin”?还是这样不可行?我正在研究另一位开发人员先前构建的内容,因此我尝试不重写所有内容,但是我对另一种方法持开放态度,只要它能够生成外部站点可以使用的大量json。
编辑:我应该注意,我使用的是API网关,将swagger.json悬停在外部站点上仅用于文档目的。
解决方法
尝试使用UseCors()功能,但是无效。我能够通过在UseSwagger之前添加匿名函数来处理响应来解决此问题。
以下代码摘自我启动时的“配置”功能。
app.Use((context,next) =>
{
context.Response.Headers["Access-Control-Allow-Origin"] = "*";
return next.Invoke();
});
app.UseSwagger();