为什么当我尝试用手机访问 django 服务器时会收到服务器端 HTTP 400 错误?

问题描述 投票:0回答:1

我已经设置了一个简单的本地运行的 django 服务器,它提供了一些按钮来触发服务器上的一些 bash 命令(当前是我的 MacBook Pro)。这些命令的输出然后显示在网站上。

无论如何:只要我从 MacBook 上的 DuckDuckGo 浏览器访问该网站,该网站就可以正常工作。我还尝试在我的台式电脑上安装 Brave 浏览器 - 工作正常。

现在,当我尝试从 iPhone 访问该网站时,连接已建立,按钮可以正常工作,而且按钮上的文本也消失了。 但更重要的是,我在运行服务器的控制台内的服务器上收到一个奇怪的错误。错误说:

[26/Apr/2024 11:33:04] code 400, message Bad request version ('p¤\x99é4rÙu*\x08\x8dÎ\x06¨A©\x06\x8f?l\x19\x9fz\x97\x00,êê\x13\x01\x13\x02\x13\x03À,À+Ì©À0À/̨À')

[26/Apr/2024 11:33:04] You're accessing the development server over HTTPS, but it only supports HTTP.

使用WireShark,我对比了iPhone和服务器之间、桌面/MacBook和服务器之间的包流量。

很明显,手机尝试使用 HTTPS / TLS 连接到服务器,而台式机 / MacBook 使用 HTTP 连接。但由于此操作失败,TLSv1 包包含以下警报消息:

Alert Message:    Level: Fatal (2)    Description: Protocol Version (70)

所以这意味着服务器端不支持 TLS。但这并不是我首先想要实现的目标。我只想使用 HTTP 连接到服务器。

但是当我尝试通过在手机地址栏中专门输入“http://192.168.1.123:8000/home(服务器的 IP)来做到这一点时,它似乎仍然尝试使用 HTTPS / TLS 建立连接,即使地址栏中显示“http://...”。

经过一些进一步的研究,我发现特别是移动浏览器可能会使用称为 HTST(HTTP 严格传输安全)的东西来防止安全风险,因为手机往往会在比台式电脑更不安全的环境中使用,例如公共 WiFi 等开。

现在我的问题是:

  1. 我该怎么做才能通过手机使用我的 Django 网站而不尝试使用 HTTPS / TLS 连接?
  2. 我所做的研究是否是解决此错误的正确方法,还是我错过了什么?

最后一件事:在我的手机上,我也使用 DuckDuckGo 浏览器,但我也尝试过使用 Safari,但也不起作用。

django mobile https webserver tls1.3
1个回答
0
投票

你能确认一下你有这个东西吗

ALLOWED_HOSTS=["*"]
服务器运行在 0.0.0.0

© www.soinside.com 2019 - 2024. All rights reserved.