Connexion: URL de changement de swagger-ui

Créé le 25 févr. 2019  ·  8Commentaires  ·  Source: zalando/connexion

La description

Nous mettons notre application de connexion dans k8s. Mais lorsque nous accédons à swagger-ui via https://example.com/v0/ui , il est redirigé vers http://127.0.0.1 :5000/v0/ui, nous ne pouvons donc pas utiliser swagger UI. Toutes les autres URL de example.com ne sont pas redirigées, nous pensons donc que le problème vient de swagger-ui.

Comportement attendu

Lorsque vous accéderez à https://example.com/v0/ui , nous serons sur le point d'accéder à swagger-ui

Comportement réel

Lorsque vous accédez à https://example.com/v0/ui , nous sommes redirigés vers http://127.0.0.1 :5000/v0/ui.

Étapes à reproduire

Information additionnelle:

Sortie des commandes :

  • python --version

$ python --version
Python 3.7.2+

  • pip show connexion | grep "^Version\:"

$ pip show connexion | grep "^Version\:"
Version : 2.2.0

question

Commentaire le plus utile

salut @czchen ,

Pouvez-vous s'il vous plaît fournir le bloc servers de votre spécification ? De plus, définissez-vous explicitement base_path ?

Cela peut être dû à une redirection à barre oblique. Pouvez-vous essayer https://example.com/v0/ui/ (avec une barre oblique à la fin) et me faire savoir si vous rencontrez toujours le problème ?

Je pense que le problème peut également être résolu par #823 - le but de ce diff est de corriger le comportement de connexion derrière un proxy inverse.

Tous les 8 commentaires

salut @czchen ,

Pouvez-vous s'il vous plaît fournir le bloc servers de votre spécification ? De plus, définissez-vous explicitement base_path ?

Cela peut être dû à une redirection à barre oblique. Pouvez-vous essayer https://example.com/v0/ui/ (avec une barre oblique à la fin) et me faire savoir si vous rencontrez toujours le problème ?

Je pense que le problème peut également être résolu par #823 - le but de ce diff est de corriger le comportement de connexion derrière un proxy inverse.

  • Le bloc serveurs est :
servers:
  - url: /v0

Ok, merci pour l'information.
Utilisez-vous aiohttp ou flask ?

Le mercredi 27 février 2019, 01h58 ChangZhuo Chen (陳昌倬) [email protected]
a écrit:

>

  • Le bloc serveurs est :

les serveurs:

  • URL : /v0

-
Vous recevez ceci parce que vous avez commenté.

Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/zalando/connexion/issues/887#issuecomment-467470319 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AAlPScaHxA6Pndz__Fl2gtXQYfrTcxlAks5vRUt4gaJpZM4bPWRO
.

ballon

Je suppose que strict_slashes dans werkzeug provoque une redirection, mais il redirige vers votre adresse IP locale, pas l'hôte sur lequel vous exposez le site.

Pouvez-vous inclure la sortie d'une requête curl détaillée ?
Votre message d'origine indique que la redirection provient de :

https://example.com/v0/ui , nous sommes redirigés vers http://127.0.0.1 :5000/v0/ui.

Mais je m'attendrais à ce que l'URL redirigée inclue la barre oblique de fin comme ceci :

https://example.com/v0/ui redirigé vers http://127.0.0.1:5000/v0/ui/

De plus, si vous avez le temps, pouvez-vous essayer le #823 et voir si cela résout votre problème ?
J'ai essayé de fusionner cela pendant un certain temps pour résoudre ce type de problème.

Ce qui suit est la sortie de `curl --verbose http://exampke.com/v0/ui.

ps. Nous changeons notre side-car d'authentification de keycloak-gatekeeper à nginx, l'URL de redirection est également modifiée.

< HTTP/1.1 301 MOVED PERMANENTLY                   
< Content-Type: text/html; charset=utf-8                      
< Date: Sat, 02 Mar 2019 03:17:04 GMT            
< Location: http://example.com:8080/v0/ui/ 
< Server: nginx/1.13.12                          
< Content-Length: 263                            
< Connection: keep-alive                         
<                                                
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>                    
<h1>Redirecting...</h1>                          
* Connection #0 to host example.com left intact
<p>You should be redirected automatically to target URL: <a href="http://localhost:5000/v0/ui/">http://localhost:5000/v0/ui/</a>.  If not click the link.%       

ps. Nous changeons notre side-car d'authentification de keycloak-gatekeeper à nginx, l'URL de redirection est également modifiée.
Avez-vous une sortie pour montrer ce comportement?

Je pense que cela peut être lié à votre configuration nginx.

Je n'ai pas réussi à reproduire votre problème.
Voici ce que j'ai fait :

cd /tmp/
git  clone https://github.com/zalando/connexion.git
cd connexion/
touch Pipfile
pipenv install -e .[swagger-ui]
pipenv shell
cd examples/openapi3/helloworld/
python hello.py

Après cela, j'ai essayé d'accéder à l'interface utilisateur sans la barre oblique de fin, et la redirection me semble correcte :

✔ ~ > curl -vv localhost:9090/v1.0/ui

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 9090 (#0)
> GET /v1.0/ui HTTP/1.1
> Host: localhost:9090
> User-Agent: curl/7.58.0
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 301 MOVED PERMANENTLY
< Content-Type: text/html; charset=utf-8
< Content-Length: 267
< Location: http://localhost:9090/v1.0/ui/
< Server: Werkzeug/0.14.1 Python/3.6.7
< Date: Thu, 07 Mar 2019 01:10:14 GMT
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
* Closing connection 0
<p>You should be redirected automatically to target URL: <a href="http://localhost:9090/v1.0/ui/">http://localhost:9090/v1.0/ui/</a>.  If not click the link.
✔ ~ >curl -vv localtest.me:9090/v1.0/ui

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localtest.me (127.0.0.1) port 9090 (#0)
> GET /v1.0/ui HTTP/1.1
> Host: localtest.me:9090
> User-Agent: curl/7.58.0
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 301 MOVED PERMANENTLY
< Content-Type: text/html; charset=utf-8
< Content-Length: 273
< Location: http://localtest.me:9090/v1.0/ui/
< Server: Werkzeug/0.14.1 Python/3.6.7
< Date: Thu, 07 Mar 2019 01:10:35 GMT
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>


md5-79aefe177c1f51034bfddaa639123ee9


* Closing connection 0
<p>You should be redirected automatically to target URL: <a href="http://localtest.me:9090/v1.0/ui/">http://localtest.me:9090/v1.0/ui/</a>.  If not click the link.



md5-b970d9b2b7b9c7575bc0d5f111f80e8f



✔ ~ > curl -vv connexion.localtest.me:9090/v1.0/ui

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to connexion.localtest.me (127.0.0.1) port 9090 (#0)
> GET /v1.0/ui HTTP/1.1
> Host: connexion.localtest.me:9090
> User-Agent: curl/7.58.0
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 301 MOVED PERMANENTLY
< Content-Type: text/html; charset=utf-8
< Content-Length: 293
< Location: http://connexion.localtest.me:9090/v1.0/ui/
< Server: Werkzeug/0.14.1 Python/3.6.7
< Date: Thu, 07 Mar 2019 01:10:45 GMT
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>


md5-79aefe177c1f51034bfddaa639123ee9


* Closing connection 0

J'ai changé le type de ticket en question .
N'hésitez pas à fermer le ticket. Sinon, si vous postez votre configuration, je peux essayer de vous aider à la déboguer.

Cette page vous a été utile?
0 / 5 - 0 notes