Swagger 大摇大摆的用户界面——” ;TypeError:无法获取“文件”;论有效回答

Swagger 大摇大摆的用户界面——” ;TypeError:无法获取“文件”;论有效回答,swagger,swagger-ui,swagger-2.0,Swagger,Swagger Ui,Swagger 2.0,我刚刚使用:从Git repo(3.0.19)中删除了最新的招摇,并更新了API以使用新版本 运行git description--tags进行确认,我的版本当前为:v3.0.19-6-gaab1403 我遇到的问题是一个描述的问题,我的回答是403(我可以在浏览器的inspector中看到),尽管我对错误403有一个响应,但我仍然得到TypeError:Failed to fetch消息 以下是我定义中关于403响应的一个片段: "403": {

我刚刚使用:从Git repo(3.0.19)中删除了最新的招摇,并更新了API以使用新版本

运行
git description--tags
进行确认,我的版本当前为:
v3.0.19-6-gaab1403

我遇到的问题是一个描述的问题,我的回答是403(我可以在浏览器的inspector中看到),尽管我对错误403有一个响应,但我仍然得到
TypeError:Failed to fetch
消息

以下是我定义中关于403响应的一个片段:

                    "403": {
                    "description": "Forbidden",
                    "headers": {
                        "Access-Control-Allow-Origin": {
                            "type": "string"
                        }
                    }
                },
我也注意到它报告了,但是,我知道这不是CORS问题,因为我已经测试了端点,并且选项返回正确,如果使用有效信息调用端点,也会返回正确的选项(我强制403)

谁能给我指一下正确的方向吗

更新:此后,我对401响应进行了测试,得到了相同的响应

而且400的工作状态与预期一致:


对于遇到此问题的任何人

经过一天的故障排除和大摇大摆的支持人员为我指出了正确的方向,结果证明这是由AWS API网关自定义授权程序中的一个错误造成的

我们目前正在使用AWS API网关来管理我们的API,这包括通过自定义授权程序管理我们的所有授权。问题在于,自定义授权人当前不支持在响应中传递头,而Swagger UI需要在响应头中使用
访问控制允许源代码:
,以显示正确的HTTP状态代码

有关此问题,请参阅此AWS线程(已超过一年):

在同一平台上进行的大摇大摆的用户界面讨论:

编辑/更新

这已通过使用网关响应得到解决。请参见同一论坛(第2页):


因为交叉源问题意味着您的网站托管在本地或8000端口或其他端口上,而您的swagger的端口号不同,所以这个问题是真实的。我们可以通过给予许可来解决它

以下是节点代码:

app.use( (request, response, next) => {
    response.header("Access-Control-Allow-Origin", "*");
    response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
});
我们也可以使用CORS npm来解决这个问题。

我在本地开发过程中遇到了这个错误(即,与AWS无关)。根本原因(违反CORS)是相同的。以下内容可能会帮助遇到此问题的其他人

我使用引用的openapi规范进行了设置。当开发服务器启动时,它会显示“正在运行”。该页面似乎正常工作,但swagger ui使用openapi规范中的内容进行后续请求,并在结果中显示
TypeError:Failed to fetch
。浏览器控制台显示
获取的访问权限'http://localhost:9090/vr/variation“起源”http://0.0.0.0:9090“
。提供的
curl
命令运行良好;尽管一开始令人困惑,但curl的成功表明问题是由于浏览器阻塞而不是服务器端故障造成的


(Connexion基于Python flask并为openapi集成提供扩展支持。)

免责声明:-此答案适用于使用Asp.net核心开发的API

在尝试从Swagger UI编辑器访问API时,我遇到了类似的问题。 我试图访问一些使用Asp.NETCore开发的API,其中SwiggerUI编辑器托管在Apache上。我面对的是CORS(跨Orgin请求)

我必须修改API代码,以允许使用以下代码进行CORS请求:- 在Startup.cs文件中声明类为“StartupShutdownHandler”

在ConfigureServices方法中添加了一段代码

var str = ConfigurationHandler.GetSection<string>(StringConstants.AppSettingsKeys.CORSWhitelistedURL);
        if (!string.IsNullOrEmpty(str))
        {
            services.AddCors(options =>
            {
                options.AddPolicy(MyAllowSpecificOrigins,
                builder =>
                {
                    builder.WithOrigins(str);
            });
            });
        }

参考

请检查为swagger jsdoc提供的swagger选项,并检查主机名和基名称是否正确。我以前遇到过相同的问题,并通过更正此问题解决了该问题。希望这也能解决问题

例如:


这是因为有时IIS绑定的HTTPS SSL证书将自动转到“未选择”。因此,您必须再次手动选择SSL证书到1 IIS Express开发证书1。下面我已经提到了如何做:

  • 打开IIS单击默认网站
  • 在右边的角落你会看到一个设置点击“绑定”,你会得到一个站点绑定窗口
  • 然后您将获得http和https详细信息
  • 在该窗口中,单击“https”并单击编辑,然后您将获得另一个窗口编辑站点绑定
  • 在该窗口中检查SSL证书
  • 如果
    SSL证书
    =
    未选择
    请选择IIS Express开发证书
  • 然后停止并启动IIS

  • 问题将得到解决。

    我在尝试验证访问OAuth2安全Rest API集时遇到了相同的错误。API服务器部署在VM上,并使用IPSEC VPN连接到它。实际上,HTTP头中带有基本身份验证的用户名/密码是使用单独的API(而不是/oauth/token)发送的,后端本身使用客户机密码进行调用,并将令牌返回给客户机。将localhost更改为服务器的实际本地IP后,问题消失了

    这个错误在招摇过市方面是常见的,可能是由许多可能的原因造成的。
    在我的情况下,这是由于连接错误。由于我身边的连接问题,我的招摇过市页面没有响应。我必须刷新它一次并为我工作。

    每个解决方案都肯定是正确的:) 但就我而言,我的网络配置文件中有这一行

     <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="5001" />  
    
    
    
    我只是将ASPNETCORE\u HTTPS\u端口替换为ASPNETCORE\u HTTP\u端口,错误已经消失:)。最后一行是

      <environmentVariable name="ASPNETCORE_HTTP_PORT" value="5001" />
    
    
    

    用您的端口替换5001。

    我也遇到了同样的问题,并且有一个非常简单的修复方法。我使用HTTP访问我的站点,但它需要HTTPS。调用端点时,我的站点正在重定向到HTTPSconst options = { swagger: "2.0", swaggerDefinition: { // options.swaggerDefinition could be also options.definition info: { title: "Customer API", // Title (required) description: "Dummy Customer API for implementing swagger", contact: { name: "Stack Overflow" }, version: "1.0.0" // Version (required) }, host: "localhost:5000", basePath: "/" }, // Path to the API docs apis: ["SwaggerImplementation/index.js"] // For complex api's pass something like apis: ["./routes/*.js"] };
     <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="5001" />  
    
      <environmentVariable name="ASPNETCORE_HTTP_PORT" value="5001" />