django-http-proxy 前置斜线

django-http-proxy prepending slash

我的 urls.py

里有这个
from httpproxy.views import HttpProxy

urlpatterns += patterns('', 
    url(r'^proxy/(?P<url>.*)$', HttpProxy.as_view(base_url=settings.PROXY_URL))
)

还有我的settings.py

...

PROXY_URL = 'http://external.com'

...

我的问题是在访问 URL http://localhost:8000/proxy/ 时,我可以从 http://external.com 的日志中看到它返回 404 因为 url 有一个额外的斜杠,例如:

http://localhost:8000/proxy/test/ 将记录 "GET //test/ HTTP/1.1" 404 15447

我一直在挖,但找不到骨头!如果各位高手好心借一根骨头给这个饿鬼?

干杯!

既然没有人回答(我什至因为没有人回答而得到了徽章,这有多酷?),我将post我的解决方案,该解决方案在问题提出后 2 天解决了。

1 - 由于 this issue pointed out by a friend,我已经避免使用 django-http-proxy

2 - 所以我求助于一个更好的库,它代理所有 HTTP 方法,不像 django-http-proxy 只能代理 GET。认识 django-revproxy.

3 - 这引入了另一个问题 — Cookie 冲突。发生这种情况是因为我有两个 Django 实例。解决方案是在您的一个 Django 应用程序中显式声明 cookie 路径,这样它就不会使用相同的路径。只需添加 settings.py 这两行:

SESSION_COOKIE_NAME = "yourApp_session_id"
CSRF_COOKIE_NAME =  "yourApp_csrftoken"

4 - 就是这样。我希望这个解决方案能帮助那些监视的人。