【问题标题】:Error "You're accessing the development server over HTTPS, but it only supports HTTP"错误“您正在通过 HTTPS 访问开发服务器,但它仅支持 HTTP”
【发布时间】:2016-06-02 20:48:32
【问题描述】:

当我尝试编写像 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.

【问题讨论】:

  • 可能过于简单化了,但是当我从睡眠中恢复笔记本电脑并重新启动计算机时,我随机遇到了这个问题
  • 在添加 SESSION_COOKIE_SECURE = False CSRF_COOKIE_SECURE = False SECURE_SSL_REDIRECT = False 我必须这样做才能使其工作: - 重新启动计算机 - 清除缓存和 cookie - 访问 127.0.0.1:800 然后再次访问 127.0.0.1:8000。希望这会有所帮助。

标签: django http ssl https


【解决方案1】:

我认为你应该创建不同的 settings.py(base_settings.py、local_settings.py、production_settings.py)。在你的 settings.py 中做这样的事情:

import socket
if socket.gethostname()=="Raouf-PC":
    from local_settings import *

将“Raouf-PC”更改为您 PC 的主机名。

P:S:我使用的是 Windows 10。

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

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True

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

SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False
SECURE_SSL_REDIRECT = False

注意:在production_settings.py和local_settings.py开头放:

from base_settings.py import *

您的基本设置应该包含将在本地和生产服务器上使用的“设置”,这样您就不会每次都重复它。

P:S 如果我的回答被接受,我将它献给 SO 上以某种方式帮助过我的好人。这是我第一次回答问题。我希望将来能做更多。 :)

【讨论】:

  • 这样可以防止出现问题。它并没有完全解决它。 Chrome 和 Firefox 似乎会记住某个页面的设置。一旦发生此错误,您可以添加这些更改,但您可能还需要清除浏览器缓存。
  • 这不是最佳做法。 Django 应用程序会期望你的计算机被命名为Raouf-PC。其他团队成员的笔记本电脑的名称不同。因此这种情况不起作用
【解决方案2】:

您可能将设置 SECURE_SSL_REDIRECT 设置为 True

运行开发服务器时这个设置应该是False

【讨论】:

  • 这有助于我访问我的网站,但我确实想通过 https 访问该网站。
  • @JustinHarris 要通过 https 访问您的站点,您需要通过服务器运行站点,NGINX + uWSGI 或 Apache + mod_python 是两个流行的选择
  • 感谢 Iain,实际上我正在使用 pythonanywhere.com,它非常简单。
  • @SalahAdDin 尝试清除缓存。大多数浏览器在发现 https 版本后会继续尝试连接。
【解决方案3】:

而不是使用命令

python manage.py runserver

我用过

python manage.py runserver 8080

只需更改端口号,它就可以为我工作。

【讨论】:

    【解决方案4】:
    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
    

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

    【讨论】:

    • 设置(仅)SECURE_SSL_REDIRECTFalse 并清除浏览器缓存对我有用。
    • @Mujeeb 我试过了,但它对我不起作用......但是,上面的设置确实让一切正常。
    【解决方案5】:

    只需将 .env 文件中的路径更改为 http://localhost:8000/

    它对我有用。我将 Django 后端和 React 前端与 Django REST 框架一起使用。

    【讨论】:

      【解决方案6】:

      如果您是团队的一员,您可以使用变量来设置开发环境。我用DJANGO_DEV=development

      例如,在将用于开发的计算机上,将其添加到 ~/.bashrc 文件中:

      export DJANGO_DEV=true

      或者你可以使用django-environ

      之后您可以检查当前环境是否为 DEV 环境并设置具体值。

      import os
      
      if os.environ.get('DJANGO_ENV') is not None:
          SECURE_SSL_REDIRECT = False
          SESSION_COOKIE_SECURE = False
          CSRF_COOKIE_SECURE = False
      else:
          SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
          SECURE_SSL_REDIRECT = True
          SESSION_COOKIE_SECURE = True
          CSRF_COOKIE_SECURE = True
      

      如果有多个设置,您可以按照@yoyo 的回答中所述去定义特定文件。

      【讨论】:

        【解决方案7】:

        我还建议确保您没有尝试通过某些端口访问页面。例如,通过在 PyCharm 上使用某个端口运行 Django 服务器。

        【讨论】:

          【解决方案8】:
          1. 在您的 settings.py 文件末尾插入以下配置或将它们完全注释掉(如果您已经有的话)

            SECURE_CONTENT_TYPE_NOSNIFF = 假 SECURE_BROWSER_XSS_FILTER = False SECURE_SSL_REDIRECT = 假 SESSION_COOKIE_SECURE = 假 CSRF_COOKIE_SECURE = 假 X_FRAME_OPTIONS = '拒绝'

          那么-, 2. 清除浏览器缓存,然后重新运行项目。

          【讨论】:

            【解决方案9】:

            它清楚地表明您正在通过 https 访问开发服务器,但它只支持 http。

            通常我们访问像 http://127.0.0.1:8000 这样的开发服务器,但在你的情况下它是 https://127.0.0.1:8000,因为它提到我们无法通过 https 访问开发服务器。

            我遇到了同样的问题,但在我将电子邮件验证发送到 gmail 帐户时,我将端点发送为 https://127.0.0.1:8000/verify。使用https而不是http,所以我将其更正为http,然后它就可以正常工作了。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-01-09
              • 2017-02-26
              • 1970-01-01
              • 1970-01-01
              • 2015-03-21
              • 2020-03-08
              • 1970-01-01
              相关资源
              最近更新 更多