如果我尝试通过 HTTPS 使用 Flask RestPlus 交付 Swagger UI,我只会在根 URL 处看到“未提供规范”错误消息,并且永远不会加载完整的 Swagger UI。但是,如果我访问 API 端点,它们会按预期返回响应。
查看错误页面的源 HTML,我注意到它swagger.json
是从而http://myhost/
不是从https://myhost/
我在 restplus Github 问题上发现了完全相同的问题
我已经使用该页面上提到的猴子补丁暂时解决了我的问题。Swagger UI 加载,查看我看到的 HTML 源代码swagger.json
确实是从https://myhost
.
为什么会发生这种情况,如果没有猴子补丁,我该如何解决?
HTTPS 由 Cloudflare 的“灵活”HTTPS 服务提供。
我的应用程序在 Nginx 后面,它是这样配置的,据我所知,并没有引起任何问题:
...
http {
...
server {
location / {
charset UTF-8;
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
charset UTF-8;
proxy_intercept_errors on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5000;
}
}
}