django-http-proxy前缀斜杠

时间:2015-09-27 12:33:48

标签: django http-proxy

我在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'

...

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

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

我一直在挖,但找不到骨头!如果所有的主人都能够为这种饥饿提供帮助呢?

干杯!

1 个答案:

答案 0 :(得分:2)

由于没有人回答(我甚至拿到了徽章,因为没有人回答,这有多酷?),我会发布我的解决方案,问题被提出后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 - 就是这样。我希望这个解决方案能够帮助那些关注的人。