2015-09-27 27 views
1

我有這個在我的urls.pyDjango的HTTP代理預謀斜線

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/ w生病日誌"GET //test/ HTTP/1.1" 404 15447

我一直在挖,但找不到骨頭!如果所有的主人都願意爲這種飢餓伸出援助之手?

乾杯!

回答

1

由於沒有人回答(我甚至因爲沒有人回答而獲得徽章,這有多酷?),我會發布我的解決方案,在問題提出後兩天解決。

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 - 就是這樣。我希望這個解決方案能夠幫助那些瞭望。