5

設定:

springdoc-openapi-uiシンプルなスプリングブートプロジェクトでカスタマイズせずに、バージョン 1.4.0 (Maven 経由)の Java ライブラリを使用しています。

Swagger ページは https://my-url.com/my-context-path/swagger-ui/index.htmlの下に生成されます

https://my-url.com/my-context-path/v3/api-docs/の下の api-docs

これらは両方とも機能し、私はそれらに到達できます。ここまでは順調ですね!

今問題:

https://my-url.com/my-context-path/swagger-ui.htmlに移動するだけで、HTTP ステータス 302 とlocation、swagger ページにリダイレクトするはずの応答ヘッダーに設定された属性を取得しています。上から(だと思います)。

ただし、location属性の URL にはコンテキスト パスがありません。次のようになります: https://my-url.com/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config

存在しないページにリダイレクトされ、404 エラー コードが表示されます。configUrl にもコンテキストパスがないように見えることに注意してください。

なぜこれが発生し、どのように修正できるのでしょうか?

この Github Issue は同じ問題のように見えましたが、最終的には問題が修正されたと述べられています: https://github.com/springdoc/springdoc-openapi/issues/37であり、それは私のものよりも前のバージョンのものです。

4

2 に答える 2

5

問題は、springdoc-openapi-uiSpring Boot で定義されていない限り、アプリのコンテキスト パスを認識しないことです。これは、誰にとっても可能ではない可能性があります。

X-Forwarded-Prefixうまくいけば、ゲートウェイから送信できる非標準ヘッダーがサポートされます。

私の場合 (Kubernetes)、追加するだけで Ingress をチャートに構成できます。nginx.ingress.kubernetes.io/x-forwarded-prefix: "true"

また、アプリケーション構成では、指定する必要もあります

server:
  forward-headers-strategy: framework

転送されたヘッダーを処理するための Spring のサポートを使用します。

ソース:

https://github.com/kubernetes/ingress-nginx/issues/3670

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#x-forwarded-prefix-header

https://github.com/springdoc/springdoc-openapi/issues/607

于 2020-09-17T09:13:30.733 に答える