我刚刚使用以下命令从Git存储库(3.0.19)中删除了最新的Swagger:https : //github.com/swagger-api/swagger-ui.git并更新了我的API以使用新版本。
跑来git describe --tags
确认,我的版本当前是:v3.0.19-6-gaab1403
我遇到的问题在这里描述,我的响应是403(我可以在浏览器的检查器中看到此问题),尽管我对错误403做出了响应,但仍然收到该TypeError: Failed to fetch
消息。
这是我关于403响应的定义的摘录:
"403": {
"description": "Forbidden",
"headers": {
"Access-Control-Allow-Origin": {
"type": "string"
}
}
},
我也注意到它在这里报告了,但是我知道这不是CORS问题,因为我已经测试了端点,并且OPTIONS返回正确,端点也被调用了有效信息(我强制使用此403)。
有人能指出我正确的方向吗?
更新:此后,我已经对401响应进行了测试,并具有相同的响应。
并且400正在按预期工作:
对于遇到这个问题的任何人;
经过一天的故障排除和Swagger支持人员向我指示正确的方向后,事实证明,这当前是由AWS API Gateway自定义授权者中的错误引起的。
当前,我们正在使用AWS API Gateway来管理我们的API,这包括通过自定义授权方来管理我们的所有授权。问题是自定义授权者当前不支持在响应中传递标头,而Swagger UI需要Access-Control-Allow-Origin:*
在响应标头中显示正确的HTTP状态代码。
请参阅以下有关该问题的AWS线程(已经存在了一年以上):
https://forums.aws.amazon.com/thread.jspa?messageID=728839
关于Swagger UI的讨论:https : //github.com/swagger-api/swagger-ui/issues/3403
编辑/更新
此后已通过使用网关响应来解决。看到这个相同的论坛(第2页):
我添加了
Access-Control-Allow-Origin:*
,仍然遇到错误万一它对其他人有帮助...这是我实际上在最后一个线程(网关响应)中寻找的链接。https://aws.amazon.com/about-aws/whats-new/2017/06/amazon-api-gateway-enables-customization-of-error-responses/