zoukankan      html  css  js  c++  java
  • HTTP协议

    HTTP协议

    基础知识

        协议就是互联网中的设备(交换机,路由器,防火墙)等,进行相互通讯的规则。规则规定了发送的数据格式,以及每格式所代表的意义。

    HyperText Transformation Protocol超文件传输协议,主要用于web。

        HTTP就互联网中客户端浏览器与web服务器进行相互通讯规则。

    http协议的特点:

    1、支持客户端与服务器模式。

    2、简单快捷,客户端向服务器端发起请求时,只需要指定请求的方式与所请的文件即可。

    3、方便灵活,服务器向客户端返回数据时,可以使用content-type来设置,即将传递数据的格式。

    4、无连接,当服务器处理完一个请求后,就会断开连接。

    5、无状态,服务器无法识别,当前的请求与上一次的请求是否同自同一个客户端。所以产生了cookie会话技术,来保存客户端的状态。
    6、web服务器是被动的,客户端是主动的。

    http协议的组成

        http协议是客户端浏览器与web服务器进行相互通信的规则。http协议彩的是一种请求与响应的模式。首先由客户端发请起请求,服务器端处理完成请求后进行响应。

    所以http协议由请求与响应组成:

    HTTP之URL

    URL(Uniform Resource Loacation统一资源定位)是URI(Uniform Resource Identifier统一资源标识)的子集

    URL的形式如:

    http://host【:port】/【path】

    http        表示http协议,指示浏览器通过网络找到相应的主机

    port        表示端口号,默认是80,可以不写

    path    表示所请求的文件的路径,如果省略,必须以'/'结束,如果不写浏览会自动添加'/'

    HTTP之请求

    请求头:

        请求方式        包含get 或post

        URI            请求的文件(包含路径与文件名)

            /20151219/code/01demo_http.php

        协议及版本号    http/1.1

     

    协议报头

    协议头分三种:请求报头、响应报头、普通报头(即不属于请求报头也不属于响应报头)

    协议报头的格式:        不区分大小写

    报头名+":"+空格+值        例如 host: localhost

    请求报头:

    host:表示所请求的主机        localhost

    user-agent:会将浏览器的相关信息传递给服务器

    accept:接收的数据的类型,

        text/html表示,text文本数据 html:超文本 application表示二进制数据

    accept-language:表示所接收的语言 zh-cn表示简体中文zh表示中文

    accept-encoding:表示所接收的压缩格式

    connection:表示保持连接(请求发出之后,在没有得到响应时,告诉服务器不要关闭此连接)

    last-modified-since:浏览器会缓存之前访问过的网站的资源文件,通过此报头来询问服务器此文件是否被修改过。

    referer:表示本次请求来自哪个url。

    content-length:表示请求的数据的长度,只有post请求方式才有

    authorization:表示认证

    空行

    就表示请求的报头结束,其后是请求的数据,只有post方式空行才有数据。

     

    HTTP之响应

    状态行

    协议及版本号            http/1.1

    状态码及状态信息        200 ok

    1xx        表示接收正在处理

    2xx        处理的结果

        200        处理成功

    3xx        需重定向或读取缓存等

        304        没有修改,读取自己的缓存

    4xx        客户端的错误

        404        找不到请求的文件

    5xx        服务器的错误

    响应报头

    Date                    时间

    Server                    服务器环境

    Content-length            返回的数据的长度

    Content-type            返回的数据的类型

    Last-modified            最后修改时间

    Content-language:        响应的数据的语言

    Content-enconding:    响应的数据的压缩格式

    content-charset:        响应的数据的字段编码

    空行

        响应报头结束,其后的是数据

     

    Telnet模拟get请求

    http协议是一种客户端服务器模式,所以只能够访问web服务器的软件都是http协议的客户端。

    telnet的运行是cmd窗口,但是win7以上默认没有开启telnet软件。

    开启:

        控制面板==>程序==>启用或关闭window功能

    第1步:连接服务器

    telnet 主机名 端口号

    回车

    默认telnet没有开启回显功能(显示用户输入的内容)

    开启回显

    ctrl + ]

    再回车

    第2步:构造http协议

    构造http请求头

    get /URI http/1.1

    示例:

    构造http报头

    构造http空行,并发送请求头

        回车

    示例:

    PHP模拟get请求

    第1步:连接web服务器

        fsockopen(主机名,端口号,错误代码,错误信息,超时时间);

        此函数会返回一个,资源类型的,指向web服务器的连接。

    第2步:构造请求头

    第3步:发送请求头

    第4步:接收数据

    完整示例:

    PHP模拟POST请求

    在使用Post方式提交数据时,在http协议中会以下两请求报头

    content-type:application/x-www-form-urlencoded

    content-length:长度

    第1步:

    第2步:

    第3步:

        

    第4步:

    PHP模拟HTTP协议响应

    header();用于向http协议的响应头部写信息

    刷新并跳转:

    header("refresh:秒数;url=网址");

    示例:

    header("location:url");

    图片显示:

    下载:

    //告诉浏览器以下的数据不需显示

    header('content-type: application/octet-stream');

    //告诉浏览器以下的数据作为附件下载

    header('content-disposition: attachment;filename=horse.jpg ');

    发送数据

    echo file_get_contents('文件名');

    示例:

     

  • 相关阅读:
    php 爬虫采集
    深入浅出Java 23种设计模式,最全PDF版本终于开放下载了!!(文末有福利)
    【Nginx】如何格式化日志并推送到远程服务器?看完原来很简单!!
    【Nginx】如何为已安装的Nginx动态添加模块?看完我懂了!!
    【Nginx】如何配置Nginx日志?这是最全面的一篇了!!
    【Nginx】如何按日期分割Nginx日志?看这一篇就够了!!
    【Nginx】如何封禁IP和IP段?看完这篇我会了!!
    【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
    【Nginx】实现负载均衡、限流、缓存、黑白名单和灰度发布,这是最全的一篇了!
    【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!
  • 原文地址:https://www.cnblogs.com/nyxd/p/5359826.html
Copyright © 2011-2022 走看看