• 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"."
    ";
    	$header.="Host:$url"."
    ";
    	$header.="Content-type:application/x-www-form-urlencoded"."
    ";
    	$header.="
    ";
    	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
    ";
    	$content.='Content-Disposition:form-data;name="username"'."
    
    ";
    	$content.="lisi
    ";
    #--------------------------------------------------
    	$content.="----ABC
    ";
    	$content.='Content-Disposition:form-data;name="age"'."
    
    ";
    	$content.="20
    ";
    #-------------------------------------------------
    	$content.="----ABC--
    
    ";
    #-------------------------------------------------
    	$out  = "POST /file/demo01.php HTTP/1.1"."
    ";
    	$out .= "HOST:$url
    ";
    	$out .= "Connection: keep-alive
    ";
    	$out.="Content-Type:multipart/form-data;boundary=--ABC
    ";
    	$out.="Content-Length:".strlen($content)."
    ";
    	$out.="
    ";
    	$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
    ";
        $content.='Content-Disposition:form-data;name="username"'."
    
    ";
        $content.="lisi
    ";
    	#-------------------------------------------------------------
        $content.= "----ABC
    ";
    	$content.='Content-Disposition:form-data;name="ufile";filename="timg.jpg"'."
    ";
    	$content.="Content-Type:image/jpg
    
    ";
    	$content.=file_get_contents("./timg.jpg")."
    ";
    	$content.="----ABC--"."
    
    ";
    	#-------------------------------------------------------------
    	$out  = "POST /file/demo01.php HTTP/1.1"."
    ";
        $out .= "HOST:$url
    ";
        $out .= "Connection: keep-alive
    ";
        $out.="Content-Type:multipart/form-data;boundary=--ABC
    ";
        $out.="Content-Length:".strlen($content)."
    ";
        $out.="
    ";
        $out.=$content;
        fwrite($fd, $out);
        $contents = stream_get_contents($fd);
        var_dump($contents);
    

      

  • 相关阅读:
    【转】Flask安装
    【转】Mac OS X 中 Zsh 下 PATH 环境变量的正确设置
    【转】谁说Vim不是IDE?(二)
    【转】谁说Vim不是IDE?(三)
    【转】谁说Vim不是IDE?(一)
    【转】终极 Shell
    【转】开始使用Mac OS X——写给Mac新人
    【转】如何实现一个malloc
    《神经网络和深度学习》系列文章十六:反向传播算法代码
    Vue.js之生命周期
  • 原文地址:https://www.cnblogs.com/zh718594493/p/12115579.html
Copyright © 2020-2023  润新知