Swagger UI拒绝使用自签名证书向 https 发出请求。
接下来是问题:
TypeError: Failed to fetch
上面的命令由swagger自动生成,运行后返回:
curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
手动(不使用Swagger UI)运行返回:
curl -X POST "https://localhost:8088/Authenticate" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"username\": \"user\", \"password\": \"user\"}" --insecure
我想让它像下一个(添加 - 不安全参数):
df1
这将允许我执行所需的请求。有没有办法将自定义参数添加到自动生成的Swagger卷曲?感谢。
答案 0 :(得分:2)
首先,cURL命令仅用于显示和复制粘贴。 Swagger UI实际上并未将cURL用于请求 - 它是一个网页,因此它使用JavaScript(fetch API或XMLHttpRequest或类似网站)发出请求。
正如here所述,Swagger UI不支持自签名证书(强调我的):
您的证书似乎有问题。 由于我们无法控制的安全原因,Swagger-UI(或任何浏览器内应用程序)无法绕过浏览器内置的证书验证流程。
您似乎拥有自签名证书。您将要了解如何让您的计算机信任您的证书,这是Google Chrome的指南,您可以使用它:
因此,如果您想使用Swagger UI测试使用自签名证书的服务器,您需要配置您的浏览器(或您的计算机)以信任该证书。查看这些问题以获取建议:
Chrome: Getting Chrome to accept self-signed localhost certificate
Firefox: Is there a way to make Firefox ignore invalid ssl-certificates?
有没有办法将自定义参数添加到自动生成的Swagger卷曲?
生成cURL命令的代码存在于此:
https://github.com/swagger-api/swagger-ui/blob/master/src/core/curlify.js
您可以根据需要分叉Swagger UI并调整代码。
但如上所述 - 更改显示的cURL命令不会改变实际的"尝试一下"行为,因为"尝试出来"无法绕过证书验证。
答案 1 :(得分:0)
真正的问题是我的OPTIONS响应标头与我未来的POST请求标头不匹配,因为我必须使用CORS。