我正在ESP8266 WiFi模块上设置服务器。基本操作是,您请求一个URL。 ESP提供该页面。它有一个表格。填写并单击“提交”,浏览器通过AJAX发送POST请求。我不使用jQuery,只是js。从Chrome开发工具看,一切都很好。
但是在ESP服务器方面,我注意到我偶尔会丢失帖子数据。深挖后,我发现了这个问题。
我的Windows上Chrome的理想结果:这是正常的。发布数据按预期进行。
+IPD,0,507:POST /wifi.htm HTTP/1.1
Host: 192.168.4.1
Connection: keep-alive
Content-Length: 63
Origin: http://192.168.4.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: */*
Referer: http://192.168.4.1/wifi.htm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
AlexaToolbar-ALX_NS_PH: AlexaToolbar/alx-4.0
ethOrWiFi=1&ewln=1&dhcp=1&ssid=Esensors&key=tgfgfdgfdtrd&auth=4
但在我的Mac Chrome上,我看到了以下结果。
+IPD,0,472:POST /wifi.htm HTTP/1.1
Host: 192.168.4.1
Connection: keep-alive
Content-Length: 63
Origin: http://192.168.4.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: */*
DNT: 1
Referer: http://192.168.4.1/wifi.htm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,ml;q=0.6
AlexaToolbar-ALX_NS_PH: AlexaToolbar/alx-4.0
+IPD,0,63:ethOrWiFi=1&ewln=1&dhcp=1&ssid=Esensors&key=asdfasdfasdf&auth=4
我可以重复一遍。在每种情况下唯一不同的是我在Windows上使用Chrome而不是在Mac上使用Chrome。为了仔细检查,我下载了Chrome canary version
并尝试了。第一个请求工作正常。从第二次请求开始,它显示了这个问题。为什么会这样?有任何想法吗?可能是我的笔记本有问题吗? :)
以下是Chrome上的Chrome开发者工具信息(有问题的人)
**Request Headers:**
POST /wifi.htm HTTP/1.1
Host: 192.168.4.1
Connection: keep-alive
Content-Length: 61
Origin: http://192.168.4.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: */*
DNT: 1
Referer: http://192.168.4.1/wifi.htm
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,ml;q=0.6
AlexaToolbar-ALX_NS_PH: AlexaToolbar/alx-4.0
**Request Payload**
ethOrWiFi=1&ewln=1&dhcp=1&ssid=Esensors&key=asdfasdfoi&auth=4
答案 0 :(得分:1)
+ IPD是AT命令,表示从网络接收数据。 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1);
} else {
intent.putExtra("android.intent.extras.CAMERA_FACING", 1);
}
表示从连接0接收63个字节。这与您的+IPD,0,63:
标头匹配。请注意,它也出现在请求的标题部分的开头。
ESP侧的WiFi库正在丢弃。Here和第281行是它可能发生的源代码。有几个变量会影响是否添加+ IPD,可能是您已经设置或无意中更改了一个。