四种常见的POST请求提交数据方式
# 1、form表单常用属性
1234 | action:url 地址,服务器接收表单数据的地址``method:提交服务器的http方法,一般为post和get``name:最好好吃name属性的唯一性``enctype: 表单数据提交时使用的编码类型,默认使用``"pplication/x-www-form-urlencoded"``,如果是使用POST请求,则请求头中的content-type指定值就是该值。如果表单中有上传文件,编码类型需要使用``"multipart/form-data"``,类型,才能完成传递文件数据。 |
---|---|
enctype为form表单数据的编码格式,Content-type为Http传输的数据的编码格式。分清两者
# 2、浏览器提交表单时,会执行如下步骤
1234 | 1``、识别出表单中表单元素的有效项,作为提交项``2``、构建一个表单数据集``3``、根据form表单中的enctype属性的值作为content-type对数据进行编码``4``、根据form表单中的action属性和method属性向指定的地址发送数据 |
---|---|
# 3、提交方式
12 | 1``、get:表单数据会被encodeURIComponent后以参数的形式:name1=value1&name2=value2 附带在url?后面,再发送给服务器,并在url中显示出来。``2``、post:enctype 默认``"application/x-www-form-urlencoded"``对表单数据进行编码,数据以键值对在http请求体重发送给服务器;如果enctype 属性为``"multipart/form-data"``,则以消息的形式发送给服务器。 |
---|---|
Http协议行为:Http1.1协议
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
1 | <method> <request-URL> <version> <headers> <entity-body> |
---|---|
协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分
# Post请求下的Content-Type类型(编码类型)
# 1.application/x-www-form-urlencoded
这应该是最常见的 POST 提交数据的方式了。浏览器的原生
编辑 (opens new window)
上次更新: 2021/01/23, 2:01:00