Django表示我的开发服务器不支持HTTPS,即使我已将其禁用

Sah*_*and 1 django

我已经在Django上开发了自己的网站一段时间,今天我开始学习如何部署它。我将此添加到我的settings.py中:

SECURE_SSL_REDIRECT = True,
Run Code Online (Sandbox Code Playgroud)

这导致开发服务器停止正常工作,并显示以下错误消息:

[13/Jan/2018 16:56:49] code 400, message Bad request syntax ('\x16\x03\x01\x00À\x01\x00\x00¼\x03\x03ßà\x84¼+Jnßþn-ñ\x88ý©vAþK\x83¤²êT\x86\x0b.\x8em\x0b:â\x00\x00\x1cÚÚÀ+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x00')
[13/Jan/2018 16:56:49] code 400, message Bad HTTP/0.9 request type ('\x16\x03\x01\x00À\x01\x00\x00¼\x03\x03\x87')
[13/Jan/2018 16:56:49] You're accessing the development server over HTTPS, but it only supports HTTP.

[13/Jan/2018 16:56:49] You're accessing the development server over HTTPS, but it only supports HTTP.

[13/Jan/2018 16:56:49] code 400, message Bad request version ('JJÀ+À/À,À0̨̩À\x13À\x14\x00\x9c\x00\x9d\x00/\x005\x00')
[13/Jan/2018 16:56:49] You're accessing the development server over HTTPS, but it only supports HTTP.
Run Code Online (Sandbox Code Playgroud)

为什么我的服务器停止正常工作?

请注意,当我将设置更改回时SECURE_SSL_REDIRECT = False,问题并没有消失。

dah*_*ens 7

您通过配置将django站点配置为强制执行https- SECURE_SSL_REDIRECT = True对于生产设置来说这是个好主意。

如果将SECURE_SSL_REDIRECT设置设置为True,SecurityMiddleware将永久(HTTP 301)将所有HTTP连接重定向到HTTPS。

由于这个原因(以及其他原因),您通常具有单独的开发和生产设置。有些事情几乎总是不同的。

阅读此内容以了解如何处理它的一些方法:Django:如何管理开发和生产设置?

注意

如果您的浏览器从您的站点收到一次301-重新设置该设置可能没有直接效果,因为该浏览器缓存了目标URL,并且不会通过HTTP发送请求。在这种情况下,您需要清除或禁用浏览器缓存。

  • 您是否禁用/清除了浏览器缓存?通常,浏览器在长时间接收到来自服务器的301后不再询问,而只是重定向到任何目标(因为服务器告诉了他)。作为快速测试,您可以使用其他浏览器。 (3认同)

小智 6

该浏览器缓存http- >https时,它正在同来自先前请求的重定向SECURE_SSL_REDIRECT=True

将其关闭服务器端不会影响缓存重定向。

您可以有选择地清除开发服务器的 url/ip(不是浏览器缓存中的所有内容),并通过以下方式进行操作:

  1. 关闭你的 Django 开发服务器
  2. http://127.0.0.1:8000- 它会给你一个 404
  3. 打开Chrome 的开发工具
  4. 单击并按住“重新加载”按钮
  5. 选择:“清空缓存和硬重新加载
  6. 重启 Django 开发服务器
  7. http://127.0.0.1:8000一次