- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个非常简单的 klein 脚本,它只是一个反向代理:
from klein import run, route, Klein
from twisted.web.proxy import ReverseProxyResource
@route('/')
def home(request, branch=True):
return ReverseProxyResource('www.example.com', 80, ''.encode('utf-8'))
run("MY_IP", 80)
唯一的问题是,当网站使用相对路径 /css/example
调用 CSS 时,CSS 不起作用;我不知道如何解决这个问题。我愿意接受任何建议。
我使用的是 Python-3.3。
最佳答案
基于您的代码的第一 block 是我的第一遍,但它不起作用。
它似乎适用于类似 GET /a
的东西,但那是因为/<path>
不包括额外的/
的。因此,任何比一层更深的内容都不会被代理。
调查@route
,它使用 werkzeug
下面似乎不允许任意通配符:
from klein import run
from klein import route
from twisted.web.proxy import ReverseProxyResource
@route('/', defaults={'path': ''})
@route('/<path>')
def home(request, path):
print "request: " + str(request)
print "path: " + path
return ReverseProxyResource('localhost', 8001, path.encode('utf-8'))
run("localhost", 8000)
如果您下拉到twisted
不过,您可以简单地执行以下操作:
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
This example demonstrates how to run a reverse proxy.
Run this example with:
$ python reverse-proxy.py
Then visit http://localhost:8000/ in your web browser.
"""
from twisted.internet import reactor
from twisted.web import proxy, server
site = server.Site(proxy.ReverseProxyResource('www.example.com', 80, ''))
reactor.listenTCP(8000, site)
reactor.run()
如果你想捕获、记录、修改等每个请求,你可以子类 ReverseProxyResource
并覆盖render()
。注意:您还必须覆盖 getChild()
由于 bug :
from twisted.internet import reactor
from twisted.web import proxy
from twisted.web import server
from twisted.python.compat import urlquote
class MyReverseProxyResource(proxy.ReverseProxyResource):
def __init__(self, host='www.example.com', port=80, path='', reactor=reactor):
proxy.ReverseProxyResource.__init__(self, host, port, path, reactor)
def getChild(self, path, request):
# See https://twistedmatrix.com/trac/ticket/7806
return MyReverseProxyResource(
self.host, self.port, self.path + b'/' + urlquote(path, safe=b"").encode('utf-8'),
self.reactor)
def render(self, request):
print request
return proxy.ReverseProxyResource.render(self, request)
p = MyReverseProxyResource()
site = server.Site(p)
reactor.listenTCP(8000, site)
reactor.run()
输出:
<Request at 0x14e9f38 method=GET uri=/css/all.css?20130620 clientproto=HTTP/1.1>
<Request at 0x15003b0 method=GET uri=/ clientproto=HTTP/1.1>
关于python - klein 脚本 CSS 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891145/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!