一、什么是HTTP协议

HyperText Transfer Protocol,超文本传输协议
HTTP:用于规定浏览器客户端和服务器之间的通信方式(规则)
HTTP协议主要规定了浏览器在发送请求给服务器时必须要遵循什么格式
以及规定了服务器在做出回应(响应)给浏览器时必须要遵循什么格式

HTTP工作时所遵循的原则:
1)一次请求必须对应一次响应
2)请求只能是浏览器发送给服务器,服务器只能被动的等待请求,根据请求做出回应

二、HTTP协议详解

HttpWatch浏览器插件: 用于监听浏览器和服务器通信的内容
在一个较老版本的火狐浏览器上安装这个插件

1、Http请求信息

第一部分:请求行
    GET /news/hello.html HTTP/1.1
    1)GET: 提交方式,HTTP协议中一共规定了7种提交方式,其中5种都不常用,只用GET和POST
        GET提交和POST提交有什么区别? 后面讲
    2)/news/hello.html: 请求资源路径,显示了访问哪一个应用下的哪一个资源文件
    3)HTTP/1.1: 请求所遵循的协议和版本
    
第二部分: 请求报头(若干请求头)    
    Host: localhost:8080 -- 指定访问的主机名和端口
    User-Agent: Mozilla/5.0..Firefox/25.0 -- 指定客户端的版本
    Accept: ..text/html image/* -- 客户端能够接受的数据类型
    ...
    (空白行)
第三部分: 请求实体
    如果请求方式为GET,请求实体中不会有内容(请求实体是空的);
    如果请求方式为POST,并且请求中携带了数据,此时请求实体中才会有内容;
    

2、Http响应信息

第一部分:状态行
    HTTP/1.1 200 OK
    1)HTTP/1.1: 响应所遵循的协议和版本
    2)200: 状态码,表示请求处理的结果
        200: 表示请求处理是成功的!
        302: 表示浏览器需要进一步请求才可以访问到对应的资源
        304/307: 表示让浏览器使用以前缓存的资源文件
        404: 表示浏览器所请求的资源找不到(可能是浏览器的访问路径是错误的!)
        500: 表示服务器内部出现错误(可能是服务器在处理请求时抛出了异常)
    3)OK: 和前面的状态码对应
        200 OK
        404 Not Found
        500 Internal Server Error
第二部分: 响应报头(若干响应头)
    Content-Type: text/html -- 响应给浏览器的数据类型,text/html表示html格式的网页
    Content-Length: 139 -- 响应给浏览器的数据长度,139字节
    ...
    (空白行)
第三部分: 响应实体
    响应实体:就是浏览器所请求的文件内容
    比如:浏览器请求服务器内部的一个hello.html文件,服务器在响应时,
        就会将hello.html文件的内容作为响应实体发送浏览器

    

补充内容1:什么时候是GET提交?什么时候是POST提交?

HTTP协议中一共规定了7种提交方式,但5种都不常用,只用GET和POST提交。
只有当使用表单(form)并且在表单上通过method属性指定提交方式为POST时,才是POST提交,其它的都是GET提交(AJAX除外)。
思考题:判断以下请求是什么提交方式?
(1)<form action="#"></form>                                    --- GET提交                    
(2)<form action="#" method="GET"></form>        --- GET提交    
(3)<form action="#" method="POST"></form>        --- POST提交    
(4)点击超链接访问服务器,例如:
    <a href="http://www.baidu.com">百度一下</a>    --- GET提交
(5)直接在浏览器的地址栏中书写URL地址访问服务器                --- GET提交

补充内容2:GET提交和POST提交的主要区别?

主要体现在请求参数传输过程的不相同!
GET提交: (主要用于向服务器请求数据)
1) GET提交是在地址栏URL地址的后面通过问号拼接参数将数据提交给服务器
    由于数据会显示在地址栏上,如果是隐私数据,非常的不安全
2) 通过地址栏提交数据,数据量不能超过1KB或者4KB
    更不能提交文件
POST提交: (主要用于向服务器提交数据)
1) POST不是通过地址栏提交数据,而是通过请求实体将数据带给服务器
    由于数据是通过请求实体发送数据,相对更加安全!
2) 通过请求实体提交数据,数据量理论上没有限制!
    可以提交文件
使用场景:
1)如果只是单纯做一个跳转,或者只是访问一个网页,请求中没有数据,都是使用GET提交。
2)如果在请求中有数据,但数据量不大,并且数据没有隐私性,也尽量使用GET提交。
3)如果在请求中有数据,数据量比较大或者数据较为隐私,此时推荐使用POST提交,
    如果是提交文件,只能用POST提交。
    
HTTP协议书籍:<<图解HTTP协议>>        

16 声望8 粉丝

« 上一篇
Tomcat服务器
下一篇 »
Servlet