簡體   English   中英

接收HTTP POST請求

[英]Receiving A HTTP POST Request

接收HTTP 1.1請求的規則是什么? 我嘗試查看多種信息來源,但我永遠無法得出結論性的結果。 我特別想弄清楚如何處理POST請求的主體。 我當前正在創建自己的不使用PHP或ASP.net的Web服務。 我的網站當前可以很好地處理Get Requests和POST標頭,但從未從客戶端/ Web瀏覽器接收正文數據,因此這就是為什么我想了解是否有任何特殊規則來接收POST正文。

希望你能幫忙

謝謝,米切爾

處理POST並沒有任何特殊規則 ,除了發送方需要以您期望的格式將其提供給您。 具體來說,如果POST請求的格式不是在請求的“ ACCEPT”標頭中提出的格式,那么您可能會被絆倒。 我不確定您的操作方式,但這是我遇到的最常見的問題。 示例ACCEPT是text / plain,text / json等。您可以在https://en.wikipedia.org/wiki/List_of_HTTP_header_fields上稍作閱讀,它將遍歷通用集。 不要忘記,如果您確實願意,可以選擇自己實現,這對API密鑰之類的東西非常有用(盡管使用已建立的標准被認為是最佳實踐)。

同樣,您可能正在違反跨域請求限制。 CORS會限制客戶端從其他域接收請求,通常是為了保護用戶免受可能發生的非常嚴重的事情(TM)的侵害。

雖然,這是使用PHP和ASP.NET的好處,但HTTP請求所伴隨的許多怪異是由語言(PHP)或框架(ASP.NET)為您處理的,我可以與ASP交流.NET是格式錯誤的請求的出色守護者。

我偶然發現了這個問題,因為我也無法接收HTML POST正文。 就我而言,我想從這樣的表單接收文件:

<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
  <input type="file" /> 
  <input type="submit" value="OK" />
</form>

為了調試,我開始

nc -l localhost 8000

接收並顯示請求,如enctype ='multipart / form-data'是什么意思?

細心的讀者可能會注意到type="file"輸入缺少name屬性。 結果,我使用的瀏覽器即

  • Mozilla Firefox 53.0
  • 谷歌瀏覽器58.0.3029.96

靜默地無法將文件數據包含在POST請求正文中。 內容長度字段反映了這一點。 但是,接收端的netcat當然不會解析該字段。 結果,雙方只需保持連接打開。

注意:這個問題似乎適合我的發現。 @ mitchell-nursey的另一個問題Web瀏覽器直到取消請求后才發送POST請求的主體,這看起來像是“斷開后未讀取的部分填充的緩沖區”錯誤。

暫無
暫無

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

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