J'utilise tornado 4.3 en python 2.7. Je veux rediriger une requête à un autre exemple one.For, quand je POST http://127.0.0.1/, je veux qu'il affichage à https://myip.ipip.net/.This peut être fait par nginx à l'aide ci-dessous confComment tornado set_status 307
return 307 $scheme://myip.ipip.net$request_uri;
Mais maintenant, l'URL cible est pas toujours la même façon Je ne peux pas coder en dur dans nginx. Comme mon serveur est tornado, je devrais le faire fonctionner en utilisant du code. Comme nous le savons tornado prend en charge le code HTTP en utilisant self.set_status(HTTP_CODE)
. Mais quand je mets 307 il répond 302 au client. Qu'est-ce qui ne va pas?
Voici mon code
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def post(self):
self.set_status(307)
self.redirect("https://myip.ipip.net/") #
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Voici mon test avec curl.Tornado responsed 302 si je mets 307.
curl -LI 127.0.0.1:8888 -XPOST
résultat est inférieur
HTTP/1.1 302 Found
Date: Wed, 10 May 2017 07:31:17 GMT
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Location: https://myip.ipip.net/
Server: TornadoServer/4.3
HTTP/1.1 200 OK
Server: NewDefend
Date: Wed, 10 May 2017 07:31:18 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 69
Connection: keep-alive
X-Cache: from ctl-zj-122-228-198-138
Remerciez vous!
J'ai trouvé raison dans le code source ... 'self.redirect (url, permanent = False, status = None)', l'état par défaut est 302 ou 301 ..., état Dirige tout dans self.redirect peut faire .. –