Location
ヘッダーには絶対URLが必要です。例:http://example.com
。
302見つかった応答コードは、新しいURIへのハイパーリンクを含む短いハイパーテキストメモを提供する必要があることを示しています。redirectTo()
まさにそれを行います:
from twisted.web import server, resource
from twisted.web.util import redirectTo
from twisted.internet import reactor
class HelloResource(resource.Resource):
isLeaf = True
def render_GET(self, request):
return redirectTo('http://example.com', request)
reactor.listenTCP(8080, server.Site(HelloResource()))
reactor.run()
または使用Redirect
:
from twisted.web import server
from twisted.web.util import Redirect
from twisted.internet import reactor
reactor.listenTCP(8080, server.Site(Redirect("http://example.com")))
reactor.run()
またはweb
、ツイストプラグインを使用して、redirect.rpy
ファイルに入れます。
from twisted.web.util import Redirect
resource = Redirect("http://example.com")
走る:
$ twistd -n web --port tcp:8080:localhost --resource-script redirect.rpy
デモンストレーションのために、の実装は次のredirectTo()
ようになります。
def redirect_to(url, request):
request.setResponseCode(302) # Found
request.setHeader("Location", url)
request.setHeader("Content-Type", "text/html; charset=UTF-8")
return """put html with a link to %(url)s here""" % dict(url=url) # body