Django返回HTTP 301?

sly*_*ete 57 django curl libcurl

我有一个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
Run Code Online (Sandbox Code Playgroud)

我无法从卷曲中获取页面内容.但是,如果我使用浏览器访问该页面,我会按预期看到该内容.

有任何想法吗?

谢谢,皮特

Dan*_*man 163

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

  • 有趣的是,Postman没有这样的问题(301).我猜Postman加上了斜线. (3认同)

jaw*_*jaw 6

所以对我来说,它是以下内容的组合:

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

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

因此,在这种情况下,设置 是安全的SECURE_SSL_REDIRECT = False


Abe*_*ada 5

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