一:引言

  在此之前先看一个小例子:(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

《HTTP - 理解 Content-Type》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. select理解

    https://www.cnblogs.com/skyfsm/p/7079458.html

  2. T-SQL基础查询——单表查询

    1,查询的顺序 SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorders FROM Sales.Orders GROUP BY ...

  3. jquery 选择对象随心所欲,遍历数组更是易如反掌

    jquery只要研究总结透彻了,那选择对象就会随心所欲,遍历数组更是易如反掌.选对对象,才能“娶妻生子”,才能有后续的数据处理.呵呵遍历对很关键. 怕只怕,学东西浅尝辄止一知半解.本篇特别研究总结jq ...

  4. ZMQ通信模式

    本文简要介绍ZMQ常用的通信模式 请求响应模式 常规搭配:ZMQ_REQ + ZMQ_REP 带输入负载(Round Robin)均衡搭配:ZMQ_REQ + ZMQ_ROUTER 消息分发搭配:ZM ...

  5. 安卓开发笔记——关于开源组件PullToRefresh实现下拉刷新和上拉加载(一分钟搞定,超级简单)

    前言 以前在实现ListView下拉刷新和上拉加载数据的时候都是去继承原生的ListView重写它的一些方法,实现起来非常繁杂,需要我们自己去给ListView定制下拉刷新和上拉加载的布局文件,然后添 ...

  6. Python 中filter函数用法

    filter()和map一样,接收一个函数和一个序列.和map不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素 过滤出奇数: de ...

  7. DedeCMS织梦文章页图片地址为绝对路径实现方法

    {dede:field.body function='replaceurl(@me)'/} 余斗博客改版后增加了一个m站点即手机站点,用二级域名实现,在做手机站的过程中发现一个问题,手机站和pc站都是 ...

  8. Zoomit的用法总结

    今天才发现Zoomit,相见恨晚.总结一下zoomit的使用方法,备用. Zoomit是一款超赞的演示辅助工具.具有屏幕缩放.屏幕画笔.倒计时功能.且无需安装,点开即用. 1. 屏幕缩放 Ctrl + ...

  9. Spark排序之SortByKey

    sortByKey函数作用于Key-Value形式的RDD,并对Key进行排序. package com.test.spark import org.apache.spark.{SparkConf, ...

  10. JS编程题

    1.计算给定数组 arr 中所有元素的总和 (数组中的元素均为 Number 类型) function sum(arr) { var sum=0; for (var i=arr.length-1; i ...