POST 提交数据的时候参数有哪些类型?

16,460次阅读
没有评论

共计 1163 个字符,预计需要花费 3 分钟才能阅读完成。

前言

1. HTTP 协议是以 ASCII 码  传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。

2. 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须 使用什么编码方式 。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。

3. 数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。

种类

1. application/x-www-form-urlencoded

这应该是最常见的 POST 提交数据的方式了。浏览器的原生

表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。

请求头内容类型为:Content-Type: application/x-www-form-urlencoded

提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。

一般的 POST 操作不指名类型时默认为该类型。

2. multipart/form-data

这也是常见的 post 请求方式,一般用来上传文件,各大服务器的支持也比较好。所以我们使用表单上传文件时,必须让

表单的 enctype 属性值为 multipart/form-data.

请求头内容类型为:Content-Type: application/ multipart/form-data;

注意:以上两种方式:application/x-www-form-urlencoded 和 multipart/form-data 都是浏览器原生支持的。

3. application/json

用来告诉服务端消息主体是序列化的 JSON 字符串.

4. text/xml

代表提交的是 xml 消息

在 PHP 中

仅在 Coentent-Type 取值为 application/x-www-data-urlencoded 和 multipart/form-data 两种情况下,PHP 才会将 http 请求数据包中相应的数据填入全局变量 $_POST,

PHP 不能识别的 Content-Type 类型的时候,会将 http 请求包中相应的数据填入变量 $HTTP_RAW_POST_DATA(使用这个变量需要特殊设置 php.ini),

只有 Coentent-Type 为 multipart/form-data 的时候,PHP 才不会将 http 请求数据包中的,相应数据填入 php://input,否则其它情况都会。

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-10发表,共计1163字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)