错误"您正在通过HTTPS访问开发服务器,但它仅支持HTTP"

A.R*_*ouf 16 django ssl https http

SSL连接

当我尝试编写像http:// ....这样的服务器链接时,它会重定向到https://并在终端中:

message Bad HTTP/0.9 request type ('\x16\x03\x01\x00\x8b\x01\x00\x00\x87\x03\x01Ð\x118¿JÄ\x19[Òç\x01<O')
You're accessing the development server over HTTPS, but it only supports HTTP.
Run Code Online (Sandbox Code Playgroud)

YoY*_*oYo 20

我认为你应该创建不同的settings.py(base_settings.py,local_settings.py,production_settings.py).在您的settings.py中执行以下操作:

import socket
if socket.gethostname()=="Raouf-PC":
    from local_settings import *
Run Code Online (Sandbox Code Playgroud)

将"Raouf-PC"更改为PC的主机名.

P:S:我正在使用Windows 10.

完成后,将以下数据放在您的production_settings.py中并保存.然后清除浏览器缓存并在开发服务器中访问您的站点.

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
Run Code Online (Sandbox Code Playgroud)

如果上述情况不符合您的需求,请在您的local_settings.py中粘贴以下数据,保存并清除浏览器缓存并访问您的网站.

SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False
SECURE_SSL_REDIRECT = False
Run Code Online (Sandbox Code Playgroud)

注意:在production_setttings.py和local_settings.py的开头放:

from base_settings.py import *
Run Code Online (Sandbox Code Playgroud)

您的基本设置应包含将在本地服务器和生产服务器上使用的"设置",因此您不会每次都重复这些设置.

P:S如果我的答案被接受,我会把它献给那些以某种方式帮助过我的SO人.这是我第一次回答问题.我希望将来做得更多.:)

  • 这样可以防止出现问题。它不能完全解决问题。Chrome和Firefox似乎会记住特定页面的设置。发生此错误后,您可以添加这些更改,但您可能还需要清除浏览器缓存。 (2认同)

Iai*_*ton 13

您可能已将设置SECURE_SSL_REDIRECT设置为True

此设置应False在运行开发服务器时进行

  • @JustinHarris通过https访问您的站点,您需要通过服务器运行该站点,NGINX + uWSGI或Apache + mod_python是两个流行的选择 (2认同)
  • @SalahAdDin 尝试清除缓存。大多数浏览器一旦发现 https 版本,就会继续尝试连接到该版本。 (2认同)

Dee*_*k G 8

而不是使用命令

python manage.py runserver

我用了

python manage.py runserver 8080

只需更改端口号,它就对我有用。


小智 5

CORS_REPLACE_HTTPS_REFERER      = False
HOST_SCHEME                     = "http://"
SECURE_PROXY_SSL_HEADER         = None
SECURE_SSL_REDIRECT             = False
SESSION_COOKIE_SECURE           = False
CSRF_COOKIE_SECURE              = False
SECURE_HSTS_SECONDS             = None
SECURE_HSTS_INCLUDE_SUBDOMAINS  = False
SECURE_FRAME_DENY               = False
Run Code Online (Sandbox Code Playgroud)

1.将此设置放在settings.py的末尾
。2.清除浏览器缓存,然后运行您的项目。

  • 将(仅)“SECURE_SSL_REDIRECT”设置为“False”并清除浏览器缓存对我有用。 (2认同)