《HTTP - 首部 - 理解 Content-Type》

一:引言

  在此之前先看一个小例子:(html 上传文件,服务端为PHP)

  • <?php
        var_dump($_FILES);?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Page Title</title>
    </head>
    <body>
        <form action="" method="POST">
            <input type="file" name="file">
            <input type="submit" value="submit">
        </form>
    </body>
    </html>
  - $_FILES 会获取到值么?

  - 如果不是很清楚或者觉得可以获取到,那么可以接着看看。

 

二:什么是 Content-Type?

  - 通俗理解的的话,它就是我们规定发送数据包的一种类型,就像我们寄快递一样。不同的包裹 (Content-Type) 有不同的包装方式。

  - 接收方也会根据这个类型来进行下一步操作

 

三:Content-Type 作用?

  - Content-Type用于指定内容类型,一般是指网页中存在的Content-Type,Content-Type属性指定请求和响应的HTTP内容类型。

  - 如果未指定 ContentType,默认为text/html

  - HTTP 中,本身是不存在各种格式的,Content-type 的作用,更是为了标明双方格式交互的数据格式

  - 在nginx中有个配置文件mime.types,主要是标示Content-Type的文件格式。

  - 下面是几个常见的Content-Type:

    - text/html

    - text/plain

    - text/css

    - ext/javascript

    - application/x-www-form-urlencoded

    - multipart/form-data

    - application/json

    - application/xml

    ...

  前面都是html,css,javascript的文件类型,后面四个是POST的发包方式

 

四:application/x-www-form-urlencoded

  - 常用的表单发包方式,普通的表单提交,或者js发包,默认都是通过这种方式

  - 这种发包形式的数据,在PHP使用 $_POST 可以直接获取。

 

五:multipart/form-data

  - 用在发送文件的POST包

  - 

  - 这里Content-Type告诉我们,发包是以multipart/form-data格式来传输,另外,还有boundary用于分割数据

  - 这也解释了为什么上面小例子中无法获取文件,因为它的 Content-type 是不能获取上传的文件的

 

六:application/json

  - 只是为了标明 数据类型为 JSON

  - 获取 json 数据请使用

    - $data = file_get_contents('php://input');

  - 

 

七:其余类型

  - 其余类型和 application/json 同理   

  - 获取对应的数据类型,在进行解码 

 

八:参考

  - 理解HTTP之Content-Type

posted @ 2018-06-07 17:55  Zzz哈  Views(328)  Comments(0)    收藏  举报