我有一个django视图,它在curl请求中返回HTTP 301:
grapefruit:~ pete$ curl -I http://someurl
HTTP/1.1 301 MOVED PERMANENTLY
Date: Fri, 16 Oct 2009 19:01:08 GMT
Server: Apache/2.2.9 (Win32) mod_wsgi/2.5 Python/2.6.2 PHP/5.2.6
Location: http://someurl
Content-Type: text/html; charset=utf-8
我无法从curl获取页面内容。但是,如果我使用浏览器访问该页面,我会按预期看到该内容。
有什么想法吗?
谢谢, 皮特
答案 0 :(得分:150)
您可能正在请求没有尾部斜杠的URL,并且在settings.py中将APPEND_SLASH
设置为True(默认值),因此Django会重定向到包含斜杠的URL。
答案 1 :(得分:4)
我的问题是PREPEND_WWW,在localhost中使用它时会返回301错误,我刚刚创建了一个本地设置文件并将其设置为PREPEND_WWW = False
答案 2 :(得分:1)
就我而言,在settings.py
文件上评论 SecurityMiddleware 就可以了。我不得不说这只发生在运行runserver
命令时(也称为测试时)。使用Apache时,它不属于重定向循环。
答案 3 :(得分:0)
所以对我来说,它是以下的组合:
SecurityMiddleware
已启用SECURE_SSL_REDIRECT = True
在这种情况下,Web 服务器已经进行了重定向,并将请求通过 HTTP 转发到 Django,然后 Django 再次重定向到以无限循环结束的 HTTPS。
因此,在这种情况下,设置 SECURE_SSL_REDIRECT = False
是安全的。