国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

從form的enctype屬性到Content-Type再到request.getInputStream()

2024-04-27 15:13:45
字體:
來源:轉載
供稿:網友

還是一個異常引發的故事:

需要實現一個手機客戶端行為分析的需求,手機客戶端需要上傳一些數據文件。手機客戶端通過http協議post方式上傳數據文件的時候,我們發現在服務器端無法通過request.getInputStream()獲取到相應的數據,調用request.getInputStream()讀取數據里頭啥都木有。

經過各種嘗試我們注意到如下的情況:

1.在不做任何修改的情況下,調用request.getParameter()可以獲取到部分數據,即url拼接參數的數據。

2.在不做任何修改的情況下,如果在之前任何地方都不調用request.getParameter(),而是直接調用request.getInputStream()是可以獲取到數據的。

3.原來客戶端使用默認的請求頭Content-Type:application/x-www-form-urlencoded,修改此值為multipart/form-data或者application/octet-stream之后,通過request.getInputStream()可以獲取到數據,即使之前調用過request.getParameter()。

最后的解決方法當然是客戶端修改Content-Type,因為服務器端request.getInputStream()的方法不方便修改。今天具體分析下里頭的原理。

一.從form的enctype屬性到Content-Type

寫html的時候我們都知道form有個屬性enctype,默認值是application/x-www-form-urlencoded,這個值表示會將表單數據用&符號做一個簡單的拼接。例如:

[plain] view plain copyPRint?POST /post_test.php HTTP/1.1   Accept-Language: zh-CN  User-Agent: Mozilla/4.0   Content-Type: application/x-www-form-urlencoded   Host: 192.168.12.102  Content-Length: 42  Connection: Keep-Alive  Cache-Control: no-cache     title=test&content=%B3%AC%BC%B6%C5%AE%C9%FA&submit=post+article  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乃东县| 三门县| 竹溪县| 雷山县| 长丰县| 鄂尔多斯市| 沂南县| 开封县| 浏阳市| 彩票| 罗江县| 长寿区| 凤山市| 隆安县| 长兴县| 吉林市| 秭归县| 庆云县| 封丘县| 夏邑县| 江都市| 凤阳县| 万山特区| 武隆县| 高碑店市| 新田县| 宝坻区| 广丰县| 聂拉木县| 潞城市| 巴林右旗| 商河县| 沅江市| 兴安盟| 安多县| 随州市| 黎平县| 宁海县| 沐川县| 神池县| 建德市|