Http中Content-Type的取值讲解

在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息(MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息),但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值:

  1. 常见的媒体格式类型:Content-Type: text/html;charset:utf-8;

  text/html : HTML格式

  text/plain :纯文本格式   

  text/xml :  XML格式

  image/gif :gif图片格式

  image/jpeg :jpg图片格式 

  image/png:png图片格式

        2. 以application开头的媒体格式类型:

    application/json    : JSON数据格式

    application/pdf       :pdf格式  

    application/msword  : Word文档格式

     application/octet-stream : 二进制流数据(如常见的文件下载)

     application/x-www-form-urlencoded 应用于表单

    application/xml     : XML数据格式

    application/atom+xml  :Atom XML聚合格式   

      3. 当在表单中需要上传文件的时候,使用的媒体格式类型是:multipart/form-data

二、四种常见的POST提交数据方式的媒体格式类型详解

1、application/json

   application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于       JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。 

2、application/x-www-form-urlencoded(Content-Type: application/x-www-form-urlencoded;charset=utf-8 )

  这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 encType 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据;

3、multipart/form-data

  当使用表单上传文件时,必须设置encType属性为这个请求头

4、text/xml 

  尚未使用,如遇到的话会持续进行更新

1.模拟HTTP/get传递参数

	//PHP模拟get传参数
	$url="www.first.session.com";
	$hd = fsockopen($url,80,$errno,$msg,30);
	$header="GET /file/demo01.php?name=lisi&age=20 HTTP/1.1"."\r\n";
	$header.="Host:$url"."\r\n";
	$header.="Content-type:application/x-www-form-urlencoded"."\r\n";
	$header.="\r\n";
	fwrite($hd, $header);
	$content = stream_get_contents($hd);
	var_dump($content);

2.模拟HTTP/post请求传递参数

//PHP模拟POST传参数	
	$url="www.first.session.com";
	$fd = fsockopen($url,80,$errno,$msg,30);
#--------------------------------------------------
	$content="----ABC\r\n";
	$content.='Content-Disposition:form-data;name="username"'."\r\n\r\n";
	$content.="lisi\r\n";
#--------------------------------------------------
	$content.="----ABC\r\n";
	$content.='Content-Disposition:form-data;name="age"'."\r\n\r\n";
	$content.="20\r\n";
#-------------------------------------------------
	$content.="----ABC--\r\n\r\n";
#-------------------------------------------------
	$out  = "POST /file/demo01.php HTTP/1.1"."\r\n";
	$out .= "HOST:$url\r\n";
	$out .= "Connection: keep-alive\r\n";
	$out.="Content-Type:multipart/form-data;boundary=--ABC\r\n";
	$out.="Content-Length:".strlen($content)."\r\n";
	$out.="\r\n";
	$out.=$content;
	fwrite($fd, $out);
	$contents = stream_get_contents($fd);
	var_dump($contents);

3.php模拟HTTP文件上传

	//PHP模拟POST&文件上传 
    $url="www.first.session.com";
    $fd = fsockopen($url,80,$errno,$msg,30);
    $content="----ABC\r\n";
    $content.='Content-Disposition:form-data;name="username"'."\r\n\r\n";
    $content.="lisi\r\n";
	#-------------------------------------------------------------
    $content.= "----ABC\r\n";
	$content.='Content-Disposition:form-data;name="ufile";filename="timg.jpg"'."\r\n";
	$content.="Content-Type:image/jpg\r\n\r\n";
	$content.=file_get_contents("./timg.jpg")."\r\n";
	$content.="----ABC--"."\r\n\r\n";
	#-------------------------------------------------------------
	$out  = "POST /file/demo01.php HTTP/1.1"."\r\n";
    $out .= "HOST:$url\r\n";
    $out .= "Connection: keep-alive\r\n";
    $out.="Content-Type:multipart/form-data;boundary=--ABC\r\n";
    $out.="Content-Length:".strlen($content)."\r\n";
    $out.="\r\n";
    $out.=$content;
    fwrite($fd, $out);
    $contents = stream_get_contents($fd);
    var_dump($contents);

  

posted on 2019-12-29 17:21  孤灯引路人  阅读(685)  评论(0编辑  收藏  举报

导航