Warm tip: This article is reproduced from serverfault.com, please click

Swagger UI-有效响应中出现“ TypeError:无法获取”

(Swagger UI - " TypeError: Failed to fetch" on valid response)

发布于 2017-07-18 02:49:46

我刚刚使用以下命令从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正在按预期工作:

在此处输入图片说明

Questioner
Hexie
Viewed
11
Hexie 2017-07-25 15:06:56

对于遇到这个问题的任何人;

经过一天的故障排除和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页):

https://forums.aws.amazon.com/thread.jspa?messageID=728839