application/x-www-form-urlencoded与application/json区别以及遇到的坑
場景
在Form元素的語法中,EncType表明提交數據的格式 用 Enctype 屬性指定將數據回發到服務器時瀏覽器使用的編碼類型。
?
application/x-www-form-urlencoded:
窗體數據被編碼為名稱/值對。這是標準的編碼格式。
multipart/form-data:
窗體數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分。
text/plain:
窗體數據以純文本形式進行編碼,其中不含任何控件或格式字符。
form的enctype屬性為編碼方式,常用有兩種:
application/x-www-form-urlencoded和multipart/form-data
默認為application/x-www-form-urlencoded。當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form數據轉換成一個字串(name1=value1&name2=value2…),然后把這個字串append到url后面,用?分割,加載這個新的url。
當action為post時候,瀏覽器把form數據封裝到http body中,然后發送到server。 如果沒有type=file的控件,用默認的application/x-www-form-urlencoded就可以了。 但是如果有type=file的話,就要用到multipart/form-data了。瀏覽器會把整個表單以控件為單位分割,并為每個部分加上Content-Disposition(form-data或者file),Content-Type(默認為text/plain),name(控件name)等信息,并加上分割符。
application/json
發送 ajax請求中 content-type:application/json,這樣也能在后臺接受前臺提交的數據,其實這個時候前端提交的數據是 json格式的字符串,后端要用@requestbody注解來接收。
實現
在實現發送POST請求的封裝工具類中,使用方法發送POST請求,卻遲遲沒有響應。打開工具類的源碼查看。
發現這邊是發送json格式的數據,卻沒有設置內容類型。
?
總結
以上是生活随笔為你收集整理的application/x-www-form-urlencoded与application/json区别以及遇到的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Navicat控制mysql用户权限
- 下一篇: 使用Jquery获取thymeleaf中