如何在swagger编辑器中维护会话

时间:2016-05-09 12:13:30

标签: session cookies swagger swagger-ui suppress-warnings

我正在使用swagger来构建API文档。我是新手。我正在做的是首先登录和给列表API打电话。但是作为会话,cookie不会被维护,列表调用不会被执行。您需要先登录该应用程序,然后拨打该列表。 我怎样才能在招摇编辑器http://editor.swagger.io/#/

中完成

三江源

1 个答案:

答案 0 :(得分:2)

我只是花了一些时间来讨论同样的问题,据我所知,Swagger编辑器不会使用xhr.withCredentials = true进行API调用,这意味着即使服务器的CORS策略,您的浏览器也不会发送cookie允许它。有一些关于更新Swagger编辑器以允许选项执行此操作的讨论(例如,https://github.com/swagger-api/swagger-js/issues/251),但它似乎还没有完成。

您最好的选择可能是通过在您自己的域上托管Swagger编辑器来避免整个跨源安全问题。这是其中一项建议:https://github.com/swagger-api/swagger-editor/blob/master/docs/cors.md#host-swagger-editor-in-your-own-domain。只需将它作为您自己开发网站上的某个应用程序运行即可。

另一个建议是禁用Chrome网络安全:https://github.com/swagger-api/swagger-editor/blob/master/docs/cors.md#run-swagger-editor-in-a-browser-that-ignores-http-access-control。我没试过这个但是它可能不起作用,因为Swagger Editor仍然没有正确设置XHR请求。

最后,如果您熟悉docker,则可以运行Swagger Editor泊坞窗实例并将所有内容链接起来。这很复杂,但我通过以下方式实现了这一点:

  • 在docker容器中运行我们的后端
  • 在同一网络上的另一个泊坞窗容器内运行Swagger Editor实例(https://hub.docker.com/r/swaggerapi/swagger-editor/
  • 在第三个docker容器中运行nginx反向代理服务器,以便任何对http://localhost/dev/swagger-editor/的请求被代理转发到swagger docker容器,并且对http://localhost/api/的任何请求都被代理转发到你的后端。这样浏览器只能看到localhost的请求,一切正常。

但是你需要愿意进入docker和nginx反向代理配置才能有一个合理的期望你会成功。否则这可能是另一个兔子洞。祝你好运!