今天说说http的content-type字段属性
最常用的content-type属性有三种
1.application/x-www-form-urlencoded
2.application/form-data
3.application/json
在常见业务开发中,POST请求常常在这些地方使用:前端表单提交时、调用接口代码时。
1.使用application/x-www-form-urlencoded
表单代码
<form action="/user/testAjaxJson0" method="post" enctype="application/x-www-form-urlencoded">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="submit">
</form>
通过chrome调试观察其HTTP报文
可以看出使用post表单提交时在表单属性enctype="application/x-www-form-urlencoded"时,HTTP报文的content-type=“application/x-www-form-urlencoded”,并且其表单数据被封装进请求体中,不同参数使用&
被分隔, 对数据进行了编码。
ps:若使用get方式,是将参数转换?key=value&key=value格式,连接到url后
2.使用multipart/form-data
表单代码
<form action="/user/testAjaxJson0" method="post" enctype="multipart/form-data">
<input type="text" name="name">
<input type="text" name="age">
<input type="submit" value="submit">
</form>
通过chrome调试观察其HTTP报文
我们从请求头content-type字段值可以看出,当我们改变了表单的enctype之后,字段值也随之改变,我们在开发者工具中可以看出multipart/form-data不会对参数编码,使用的boundary(分割线),boundary是用于在请求体中的数据的边界分割。
ps: 若想进行文件上传则必须将enctype设置"multipart/form-data"
3.使用application/json
该字段使用postman调试工具测试
若有业务需要,需要上传json数据,则需要将其content-type设置为application/json,并在body 中写入原生json数据。