nginx對HTTP的POST請求的Urldecode問題
阿新 • • 發佈:2018-12-21
問題現象:curl庫的POST請求中的引數被urldecode了,而沒有使用庫的POST請求沒有被urldecode請求。
原因:curl庫的POST請求的HTTP頭中有“application/x-www-form-urlencoded”,造成nginx對POST請求引數進行urldecode。
---------------------------------------------------------------------------------------------------------
FORM元素的enctype屬性指定了表單資料向伺服器提交時所採用的編碼型別,預設的預設值是“application/x-www-form-urlencoded”。
然而,在向伺服器傳送大量的文字、包含非ASCII字元的文字或二進位制資料時這種編碼方式效率很低。
在檔案上載時,所使用的編碼型別應當是“multipart/form-data”,它既可以傳送文字資料,也支援二進位制資料上載。
Browser端<form>表單的ENCTYPE屬性值為multipart/form-data,它告訴我們傳輸的資料要用到多媒體傳輸協議,由於多媒體傳輸的都是大量的資料,所以規定上傳檔案必須是post方法,<input>的type屬性必須是file。