簡體   English   中英

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 開發工具來看,看起來一切都很好。

但是在 ESP 服務器端,我注意到我偶爾會丟失發布數據。 深入挖掘后,我發現了這個問題。

Chrome 在我的 Windows 上的理想結果:這可以正常工作。 發布數據按預期進入。

+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並嘗試了。 第一個請求工作正常。 從第二個請求開始,它顯示了這個問題。 為什么會這樣? 有任何想法嗎? 可能是我的筆記本電腦有問題? :)

這是來自 Mac 上 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

+IPD 是 AT 命令,表示從網絡接收到數據。 +IPD,0,63:表示從連接 0 接收 63 個字節。這與您的Content-Length標頭匹配。 請注意,它也出現在請求的標頭部分的開頭。

您在 ESP 端的 WiFi 庫將其投入使用。 此處和第 281 行是可能發生的源代碼。 有幾個變量會影響是否添加 +IPD,也許您已經設置或無意中更改了一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM