• HTTP协议简介


    一、HTTP协议:

      HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。  

      HTTP协议基于请求响应模型,一次请求对应一次响应,请求只能由客户端发出,服务器只能被动的等待请求做出响应。

      HTTP1.0协议和HTTP1.1协议的区别:在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源;HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

    二、HTTP请求:

      客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容: 一个请求行、若干请求头、以及实体内容。

      举例:
        GET /books/java.html HTTP/1.1
        Accept: */*
        Accept-Language: en-us
        Connection: Keep-Alive
        Host: localhost
        Referer: http://localhost/links.asp
        User-Agent: Mozilla/4.0
        Accept-Encoding: gzip, deflate

      请求行
               GET /books/java.html HTTP/1.1
               请求方式:七种请求方式: POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

        真正使用的时候:POST/GET
               GET请求方式和POST请求区别在于请求参数在传递的过程中方式不同
               如果是GET提交,请求参数将会附加在请求的URL后面作为请求地址的一部分带到服务器端,可以传输的数据大小有限制一般不允许超过1K.
               如果是POST提交,请求参数将会在http请求的实体内容中进行传输,这种方式传输的数据没有大小限制.

        利用form表单提交数据时,form表明明确的声明要用POST提交,这是请求参数就是POST提交
               除此以外所有方式的请求参数都是GET提交

      若干请求头--消息头

       Accept: */*    
            Accept-Charset: ISO-8859-1
            Accept-Encoding: gzip,compress
            Accept-Language: en-us,zh-cn
            Host: www.it315.org:80
            If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
            Referer: http://www.it315.org/index.jsp
            User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
            Cookie:
            Connection: close/Keep-Alive  
            Date: Tue, 11 Jul 2000 18:23:51 GMT

    三、HTTP响应

      一个HTTP响应代表服务器向客户端回送的数据,它包括: 一个状态行、若干响应头(消息头)、以及实体内容。

      状态行:HTTP/1.1 200 OK  协议版本  状态码  原因叙述<CRLF>
            状态码--用来表示本次请求的处理结果的代码
                200  表示成功接收请求并已完成整个处理过程
                302  对象已移动
                304/307  未修改/临时重定向
                404  客户端的请求有错误
                500  服务器端出现错误

      若干响应头
            Location: http://www.it315.org/index.jsp
            Server:apache tomcat
            Content-Encoding: gzip
            Content-Length: 80
            Content-Language: zh-cn
            Content-Type: text/html; charset=GB2312
            Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
            Refresh: 1;url=http://www.it315.org
            Content-Disposition: attachment;filename=aaa.zip
            Transfer-Encoding: chunked 
            Set-Cookie:SS=Q0=5Lb_nQ; path=/search
            ETag: W/"83794-1208174400000"
            Expires: -1 ---- 通知浏览器是否缓存当前资源 ,如果这个头的值是一个以毫秒为单位值就是通知浏览器缓存资源到指定的时间点,如果值是0或-1则是通知浏览器禁止缓存
            Cache-Control: no-cache  -- 通知浏览器是否缓存资源
            Pragma: no-cache    -- 通知浏览器是否缓存资源
                之所以三个头是一个功能,是因为历史原因.不同的浏览器对这三个头支持的不同,一般来说这三个头要同时使用确保不同的浏览器都能实现控制缓存的功能
            Connection: close/Keep-Alive  
            Date: Tue, 11 Jul 2000 18:23:51 GMT
              

  • 相关阅读:
    在IDEA上本地更新同步Git中的更改
    protobuf的序列化和反序列化
    关于Pytorch报警告:Warning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead
    990. 等式方程的可满足性
    死锁
    事务隔离
    Lab-1
    软件测试homework3
    TCP/UDP网络连接的固定写法
    软件测试Homework 2
  • 原文地址:https://www.cnblogs.com/ckysea/p/4628621.html
Copyright © 2020-2023  润新知