首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flasgger / Swagger - apidocs适用于本地主机,而不是Openshift (您需要启用JavaScript来运行这个应用程序)

Flasgger / Swagger - apidocs适用于本地主机,而不是Openshift (您需要启用JavaScript来运行这个应用程序)
EN

Stack Overflow用户
提问于 2021-08-19 13:23:12
回答 1查看 501关注 0票数 1

我正在运行Python服务器。一个同事添加了Flasgger/Swagger支持,我可以使用

代码语言:javascript
运行
复制
http://localhost:5000/apidocs

类似地,我可以获得API的json版本。

代码语言:javascript
运行
复制
http://localhost:5000/api_documentation.json
  Python code configures that filename

相同的代码部署在Openshift项目中,并使用Traefik将外部请求路由到Python服务器。

代码语言:javascript
运行
复制
https://my-openshift-url-here/apidocs
  does not display the API
  only displays "Powered by Flasgger 0.9.5
https://my-openshift-url-here/api_documentation.json
  works same as the localhost request

"apidocs“和"api_documentation.json”中的Traefik键,并将其直接路由到Python服务器

代码语言:javascript
运行
复制
        rule: PathPrefix(`/apidocs`)
        entryPoints:
          - web
        middlewares:
          - gzip
          - mysecurity-no-token
        service: my-python-server

      apidocumentation:
        rule: PathPrefix(`/api_documentation.json`)
        entryPoints:
          - web
        middlewares:
          - gzip
          - mysecurity-no-token
        service: my-python-server

我在我的Chrome调试器(F12 - Network)中看到的是swagger-ui-bundle.js响应:“您需要启用JavaScript来运行这个应用程序。”

为什么这在本地主机版本的Chrome中有效,而在访问部署在Openshift上的服务器时却不行呢?两者都是从相同的Chrome窗口访问-只是不同的标签。

这是localhost版本的apidocs请求的标题内容。

代码语言:javascript
运行
复制
    Request Method: GET
    Status Code: 200 OK
    Remote Address: 127.0.0.1:5000
    Referrer Policy: strict-origin-when-cross-origin
    Content-Length: 3041
    Content-Type: text/html; charset=utf-8
    Date: Thu, 19 Aug 2021 12:08:41 GMT
    Server: Werkzeug/2.0.1 Python/3.7.4
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate, br
    Accept-Language: en-US,en;q=0.9
    Cache-Control: no-cache
    Connection: keep-alive
    Host: localhost:5000
    Pragma: no-cache
    sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
    sec-ch-ua-mobile: ?0
    Sec-Fetch-Dest: document
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: none
    Sec-Fetch-User: ?1
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36

这是Openshift版本的apidocs请求的标题内容。

代码语言:javascript
运行
复制
    Request Method: GET
    Status Code: 200 OK
    Remote Address: 123.456.789.123:443 (obfuscated, of course)
    Referrer Policy: origin
    content-encoding: gzip
    content-length: 1264
    content-type: text/html; charset=utf-8
    date: Thu, 19 Aug 2021 12:08:59 GMT
    server: istio-envoy
    vary: Accept-Encoding
    x-envoy-upstream-service-time: 28
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate, br
    Accept-Language: en-US,en;q=0.9
    Cache-Control: no-cache
    Connection: keep-alive
    Host: my-openshift-server-url-here
    Pragma: no-cache
    sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
    sec-ch-ua-mobile: ?0
    Sec-Fetch-Dest: document
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Site: none
    Sec-Fetch-User: ?1
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36
EN

回答 1

Stack Overflow用户

发布于 2021-08-19 15:30:55

原来是Traefik路由问题。在对/apidocs请求的初始响应之后,它还向/flasgger_static/foo发出请求。我不得不在Traefik路由表中为flassgger_static添加一条路由。

代码语言:javascript
运行
复制
flassger:
  rule: PathPrefix(`/flasgger_static`)
  entryPoints:
    - web
  middlewares:
    - gzip
    - mysecurity-no-token
  service: my-python-server
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68848715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档