• Http协议


    简介

    HTTP(Hyper Text Transfer Protocol)是超文本传输协议。它是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

    HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。

    HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。

    浏览器和服务器信息交换过程:

    1.建立连接

    2.发送请求信息

    3.回送响应信息

    4.关闭连接

    由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

    HTTP协议是一个无状态的协议

    无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了(Cookie技术和Session技术将在后续博文中进行详细的讲述)

    HTTP1.1支持持续连接,一次连接可以发送多次请求

    HTTP1.0,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个对象,严重影响客户机和服务器的性能。
    HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

    实际上,HTTP是通过'Connection: Keep-Alive ' 来保持持续的连接。Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。市场上的大部分Web服务器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。

    工具

    ①http通讯查看软件_Http Watcher

    我们可以通过一种叫做HttpWatcher的软件来查看客户端和服务器的通讯状态。Http

     ②http通讯查看软件_Firebug

    Firebug是网页浏览器 Mozilla Firefox 下的一款开发类插件,现属于Firefox的五星级强力推荐插件之一。它集HTML查看和编辑、JavaScript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。Firebug如同一把精巧的瑞士军刀,从各个不同的角度剖析Web页面内部的细节层面,给Web开发者带来很大的便利。例如 Yahoo! 的网页速度优化建议工具 YSlow。

    Firebug 也是一个除错工具。用户可以利用它除错、编辑、甚至删改任何网站的CSS、HTML、DOM、与JavaScriptt代码。

    我们在前面讲授JAVASCRIPT中已经学习使用了Firebug。现在我们开始使用他的网络通讯查看功能,该功能类似于我们刚刚看到的Http Watcher软件。

    格式

    ①请求

    一个完整的请求消息包括:一个请求行、若干消息头、实体内容

    请求行格式:请求方式  资源路径  HTTP版本号

    1. GET方式:

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">GET  http://www.baidu.com?name=aaa&password=bbb   HTTP/1.1  
    2. Host: www.baidu.com  
    3. Accept:*/*  
    4. Pragma: no-cache  
    5. Cache-Control: no-cache  
    6. Referer: http://www.baidu.com  
    7.   
    8. User-Agent:Mozilla/4.04[en](Win95;I;Nav)</span>  

    拿网上的一张图来解释其中的奥秘:

    2. POST方式:

    [html] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">POST  http://www.baidu.com   HTTP/1.1  
    2. Host: www.baidu.com  
    3. Accept:*/*  
    4. Pragma: no-cache  
    5. Cache-Control: no-cache  
    6. Referer: http://www.baidu.com  
    7.   
    8. User-Agent:Mozilla/4.04[en](Win95;I;Nav)  
    9. Content-Length:45  
    10.   
    11. name=aaa&password=bbb </span>  

    ②响应

    一个完整的响应消息包括:状态行,一个或多个应答头,一个空行,响应实体

    状态行格式:

    1.HTTP版本号 状态码 原因叙述

    2.状态码:200(一切正常),404(所请求资源不存在),500(服务器内部程序错误)

    通用消息头

    通用消息头指的是既可用于请求消息、又可用于响应消息。

    1.Connection:用于指定处理完本次请求/响应后,是否还要急需保持连接。

    2.Date:产生当前消息的时间。

    3.Pragma:no-cache.

    4.Cache-Control:指示浏览器或服务器缓存的具体策略

    5.Content-Length:表示(请求/响应)正文的长度。

    请求

    1.Accept:浏览器可接受的MIME类型。

    2.Accept-Charset:浏览器可接受的字符集。

    3.Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。

    1.Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

    2.Connection:表示是否需要持久连接。

    3.Content-Length:表示请求消息正文的长度。

    4.Host:初始URL中的主机和端口。

    5.Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 

    6.User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

    响应头

    1.Allow 服务器支持哪些请求方法(如GET、POST等)

    2.Server处理请求的原始服务器的软件信息

    3.Location 表示客户应当到哪里去提取文档。

    4.Refresh:告诉浏览器过n秒后自动刷新页面

    5.Content-Type 表示实体文档属于什么MIME类型。

    6.Content-Length 返回的实体内容的长度

    7.Last-Modified 文档的最后改动时间。

    8.Content-Location:实体所在的实际位置路径

    业务思想

    学习HTTP协议是进入B/S业务最初的一步,正式开启浏览器工作区的服务模式,作为互联网上应用最为广泛的协议之一,以其简单、应用广泛等特点.

  • 相关阅读:
    Selenium简单测试页面加载速度的性能(Page loading performance)
    Selenium Page object Pattern usage
    Selenium如何支持测试Windows application
    UI Automation的两个成熟的框架(QTP 和Selenium)
    分享自己针对Automation做的两个成熟的框架(QTP 和Selenium)
    敏捷开发中的测试金字塔(转)
    Selenium 的基础框架类
    selenium2 run in Jenkins GUI testing not visible or browser not open but run in background浏览器后台运行不可见
    eclipse与SVN 结合(删除SVN中已经上传的问题)
    配置Jenkins的slave节点的详细步骤适合windows等其他平台
  • 原文地址:https://www.cnblogs.com/JimBo-Wang/p/6552318.html
Copyright © 2020-2023  润新知