首页 文章

iOS忽略NodeMCU http服务器响应和浏览器显示没有连接

提问于
浏览
0

所以我最近得到了一个nodeMCU Lua V1,我启动它连接到我的WiFi,并从https://en.wikipedia.org/wiki/NodeMCU#HTTP_server加载了默认的HTTP服务器 . 兴奋地,我在我的ADSL路由器上做了一个端口前进,并要求朋友连接以查看我的hello world响应 . 我的朋友有苹果设备(iPhone / iPad)无法加载网站 . 与Android设备或计算机的朋友一起查看网站没有问题 . 我尝试使用同一WiFi网络上的iPad . 它也有这种行为 . 为了弄清楚发生了什么,我在iPad上尝试了不同的浏览器 . 我做了一个Wireshark跟踪,看到NodeMCU将响应发送到iPad . 但iPad一直显示连接错误,或者你是离线消息 . 认为它可能是缺少的html Headers 我更改了nodeMCU发送到的响应:

<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>

iPad仍显示相同的信息 .

所以我的问题是为什么iOS表现得这样,什么阻止它并让浏览器认为它没有互联网连接? iOS上的浏览器是以这种方式运行,还是操作系统做了一些奇怪的事情 . 为了让iOS设备看到网页,我需要做些什么?

1 回答

  • 1

    噢,那个维基百科的文章确实很糟糕(另见https://github.com/nodemcu/nodemcu-firmware/issues/832) . 我已经多次看过这个代码示例,但从未意识到它的起源 .

    首先,你不应该再支持并且包含许多错误 . 来自 devmaster 分支的Build a custom firmware . 其次,查看socket:send()上的官方文档,了解如何正确执行此操作 .

    但实际问题是 conn:send("<h1> Hello, NodeMcu.</h1>") ,因为该消息不是有效的HTTP响应 . 你需要用 HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n 作为前缀 .

    类似的问题和答案是herehere .

相关问题