• HTTP 协议基本知识


    HTTP协议
        7.1.什么是HTTP协议:
            HTTP协议是用来规定浏览器客户端和服务器通信的方式

        7.2.基本原则
            基于请求响应模型
            一次请求对应一次响应
            请求只能由客户端发出, 服务器只能被动的等待请求, 做出回应
            
        7.3.http协议详解
            7.3.1.Http请求
                请求行
                    GET /news3/1.html HTTP/1.1

                    GET:
                        提交方式, 一共有7种(GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE),其中5种不常用, 只用GET和POST提交

                    /news3/1.html:
                        请求资源的路径

                    HTTP/1.1:
                        1.0和1.1: 1.0版本的协议在每次通信结束后会立即断开客户端和服务器之间的连接(通道), 如果需要再次发送请求, 只能再建立新的连接
                        1.1版本的协议在每次通信结束后会将连接保持一段时间, 如果在这段时间内需要发送请求, 可以复用该连接.
                
                若干请求头
                    Accept: text/html,image/*   
                        -- 通知服务器当前浏览器可以接受那些格式的数据
                    Accept-Charset: ISO-8859-1  
                        -- 浏览器可以接受的字符集编码
                    Accept-Encoding: gzip,compress
                        -- 浏览器可以接受的压缩格式
                    Accept-Language: en-us,zh-cn  
                        -- 浏览器接受的语言环境,和国际化相关的头
                    Host: www.tedu.cn:80  
                        --  需要访问的虚拟主机的名称
                    !!Referer:
                        http://www.tedu.cn/index.jsp
                        -- 这是和防盗链相关的头,对当前资源的访问来自哪个页面的超链接
                    User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
                        -- 客户端的基本信息
                    !!Cookie
                        -- 和cookie相关的头
                    Connection: close/Keep-Alive
                        -- 是否继续保持连接   
                    Date: Fri, 17 Feb 2017 18:23:51 GMT
                        -- 当前发送请求的时间    
                
                    (一个空行)
                请求实体内容
                    xxxxxx

            7.3.2.Http响应
                一个状态行
                    HTTP/1.1 200 OK
                    HTTP/1.1: Http协议的版本
                    200: 状态码, 一个三位的数字(100~600) 表示服务器对请求处理的结果

                    常用的状态码:
                        200: 表示服务器成功的处理请求
                        302: 表示请求重定向
                        304: 表示通知浏览器使用缓存
                        307: 表示通知浏览器使用缓存
                        404: 表示资源找不到
          400: 表示请求参数不匹配(请求参数有问题)
                        500: 服务器内部出现错误
          505: 服务器不支持请求中的http版本,常用的是HTTP/1.1

                                        
                    OK: 描述信息
                    
                若干响应头:
                    !!Location: http://www.tedu.cn/index.jsp  
                        -- 配合302使用实现请求重定向
                    Server:apache tomcat
                        -- 服务器的基本信息
                    Content-Encoding: gzip  
                        -- 服务器发送的数据使用的压缩格式
                    Content-Length: 80
                        -- 服务器发送的数据的大小
                    Content-Language: zh-cn
                        --服务器发送的数据使用的语言环境 国际化相关的头
                    !!!Content-Type: text/html; charset=GB2312
                        -- 服务器发送的数据是什么格式的,如果是字符格式的数据,则还可以通知服务器发送的数据使用的是什么编码,浏览器会根据这个头指定的编码决定使用哪个编码来打开收到的数据

                    !!Refresh: 1;url=http://www.tedu.cn
                        -- 定时刷新相关的头,通知浏览器,过几秒后自动刷新访问哪个地址
                    Content-Disposition: attachment;filename=aaa.zip
                        -- 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头

                    !!!Set-Cookie:SS=Q0=5Lb_nQ; path=/search
                        -- 和Cookie相关的头
                    !Expires: -1
                        -- 通知浏览器是否缓存
                    !Cache-Control: no-cache  
                        -- 通知浏览器是否缓存
                    Pragma: no-cache   
                        -- 通知浏览器是否缓存
                        --之所以一个功能有三个头,是因为历史原因.所以为了网页的兼容性考虑,通常这三个头要一起使用

                    Connection: close/Keep-Alive  
                        -- 是否保持连接
                    Date: Fri, 17 Feb 2017 18:24:11 GMT  
                        -- 响应时的时间
                (一个空行)
                响应实体内容
                    xxxxxx

  • 相关阅读:
    HttpContext 来源(System.Web.HttpContext.Current值为null的问题)
    属性" ******** "的代码生成失败.错误是:"程序集"********.Version=1.0.0.0,Culture=neutral,..........无标记为序列化""](转)
    什么是cookie?session和cookie的区别?
    Java中有多少种设计模式?请简单画一下三种常见设计模式的类图?
    Java中抽象类和接口的区别?
    JRE 和 JDK 的区别是什么?
    Hibernate中Criteria的完整用法?
    正则表达式ab?c匹配的字符串是?(B)
    下面forward和redirect的描述,正确的是(ABCD)
    springMVC中的中心控制Servlet是那个类?(B)
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6882867.html
Copyright © 2020-2023  润新知