我已经设置了一个简单的本地运行的 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 等开。
现在我的问题是:
最后一件事:在我的手机上,我也使用 DuckDuckGo 浏览器,但我也尝试过使用 Safari,但也不起作用。
你能确认一下你有这个东西吗
ALLOWED_HOSTS=["*"]
服务器运行在 0.0.0.0