70

我有一个 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 获取页面内容。但是,如果我使用浏览器访问该页面,我会看到预期的内容。

有任何想法吗?

谢谢,皮特

4

5 回答 5

209

您可能正在请求不带斜杠的 URL,并且APPEND_SLASH在 settings.py 中设置为 True(默认值),因此 Django 正在重定向到包含斜杠的 URL。

于 2009-10-16T19:12:31.330 回答
4

我的问题是 PREPEND_WWW,在 localhost 中使用它时返回 301 错误,我刚刚创建了一个本地设置文件并将其设置为 PREPEND_WWW = False

于 2010-11-24T17:00:56.103 回答
3

就我而言,在文件上评论SecurityMiddleware就可以了settings.py。我不得不说这只发生在运行runserver命令时(也就是测试时)。使用 Apache,它不会落入重定向循环。

于 2015-08-27T14:16:24.090 回答
1

所以对我来说,这是以下几点的组合:

  • SecurityMiddleware启用
  • SECURE_SSL_REDIRECT = True
  • 单独的 Web 服务器也启用了 SSL 重定向

在这种情况下,Web 服务器已经进行了重定向并通过 HTTP 将请求转发到 Django,然后再次重定向到 HTTPS,并以无限循环结束。

因此,在这种情况下,设置SECURE_SSL_REDIRECT = False.

于 2020-12-18T20:31:11.817 回答
0

使用邮递员时一切正常,但是当我从前端请求它时,我收到了 301 错误。你可能错过了 url 中的斜杠,我遇到了同样的问题,我通过在 url 中添加斜杠来解决它....

于 2022-02-04T10:57:49.120 回答