Post 请求在 ESP8266 上看起来像 2 个不同的请求。这是 Chrome 错误吗?
Post request looks like 2 different requests on ESP8266. Is this a Chrome bug?
我正在 ESP8266 WiFi 模块上设置服务器。基本操作是,你请求一个URL。 ESP 为该页面提供服务。它有一个形式。你填好点击提交,浏览器发送AJAX请求POST。我没有使用 jQuery,只是 js。从 Chrome dev-tools,看起来一切都很好。
但在 ESP 服务器端,我注意到我偶尔会丢失 post 数据。深入挖掘后,我发现了这个问题。
Chrome 在我的 windows 上的理想结果:而且它工作正常。 Post 数据按预期进入。
+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 在 Mac(有问题的那个)
上的 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
+IPD 是表示从网络接收到数据的 AT 命令。 +IPD,0,63:
表示从连接 0 接收 63 个字节。这与您的 Content-Length
header 匹配。请注意,它也出现在请求的 header 部分的开头。
您在 ESP 端的 WiFi 库正在投入使用。Here 第 281 行是可能发生这种情况的源代码。有几个变量会影响是否添加 +IPD,也许你已经设置或无意中更改了一个。
我正在 ESP8266 WiFi 模块上设置服务器。基本操作是,你请求一个URL。 ESP 为该页面提供服务。它有一个形式。你填好点击提交,浏览器发送AJAX请求POST。我没有使用 jQuery,只是 js。从 Chrome dev-tools,看起来一切都很好。
但在 ESP 服务器端,我注意到我偶尔会丢失 post 数据。深入挖掘后,我发现了这个问题。
Chrome 在我的 windows 上的理想结果:而且它工作正常。 Post 数据按预期进入。
+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 在 Mac(有问题的那个)
上的 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
+IPD 是表示从网络接收到数据的 AT 命令。 +IPD,0,63:
表示从连接 0 接收 63 个字节。这与您的 Content-Length
header 匹配。请注意,它也出现在请求的 header 部分的开头。
您在 ESP 端的 WiFi 库正在投入使用。Here 第 281 行是可能发生这种情况的源代码。有几个变量会影响是否添加 +IPD,也许你已经设置或无意中更改了一个。