1. 程式人生 > >nginx對HTTP的POST請求的Urldecode問題

nginx對HTTP的POST請求的Urldecode問題

               

問題現象: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。