我们在 API 网关后面有我们的 Spring Boot 服务。使用 Springfox 的早期版本 - 2.1.2,我们在加载 swagger-ui.html
页面时没有问题。这适用于 Spring Boot 1.4.3.RELEASE。从那时起,我们已经升级到 Boot 1.5.7,并将 Springfox 升级到 2.8.0。
现在,如果我们加载页面,我们会收到一个带有以下长消息的警告框。
无法推断基本网址。这在使用动态 servlet 注册或 API 位于 API 网关后面时很常见。基本 url 是提供所有 swagger 资源的根。例如,如果 api 在 http://example.org/api/v2/api-docs 上可用,那么基本 url 是 http://example.org/api/ 。请手动输入位置
我在网上搜索了一些提示,但这些情况似乎不适用于我们。一方面,如果我只是简单地恢复版本,它就会通过同一个 API 网关重新开始工作。
跟踪流量,.html 页面对三个 XHR 资源的调用似乎引起了问题。这些从我们的 API 网关返回 401。他们返回 401 的原因是因为 cookie 没有传递。
这三个调用是:
- https://base_address/base_context/swagger-resources/configuration/ui
- https://base_address/base_context/swagger-resources/configuration/security
- https://base_address/base_context/swagger-resources
如果我将这些 URL 作为纯浏览器请求加载 - 它们可以工作 - 因为发送了 cookie。
我怀疑CORS是否适用,因为HTML是从与swagger JSON和实际服务调用相同的地址提供的。
知道为什么会发生这种情况吗?有人遇到过类似的问题吗?解决方法的建议?提前非常感谢。
原文由 Arnab Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议
添加安全配置——以下为身份验证而跳过的 URL::