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 - 就是这样。我希望这个解决方案能帮助那些监视的人。
我的 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 - 就是这样。我希望这个解决方案能帮助那些监视的人。