Http的请求字段和响应字段

来源:互联网 发布:电子音乐制作软件ios 编辑:程序博客网 时间:2024/06/05 02:01
  • 用于HTTP请求中的常用请求头字段
    Accept:用于高速服务器,客户机支持的数据类型
    Accept-Charset:用于告诉服务器,客户机采用的编码格式
    Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式
    Accept-Language:客户机的语言环境
    Host:客户机通过这个头高速服务器,想访问的主机名
    If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间
    Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(防盗链)
    User-Agent:客户机通过这个头告诉服务器,客户机的软件环境
    Cookie:客户机通过这个头可以向服务器带数据
    Connection:处理完这次请求后是否断开连接还是继续保持连接
    Date:当前时间值

  • HTTP响应
    状态行:用于描述服务器对请求的处理结果。
    状态码:100~199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。
    200~299:表示成功接收请求并已完成整个处理过程。常用200
    300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(意味着你请求我,我让你去找别人),307和304(我不给你这个资源,自己拿缓存)
    400~499:客户端的请求有错误,常用404(意味着你请求的资源在web服务器中没有)403(服务器拒绝访问,权限不够)
    500~599:服务器端出现错误,常用500
    多个响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。
    Location:这个头配合302状态码使用,用于告诉客户找谁。
    Server:服务器通过这个头告诉浏览器服务器的类型。
    Content-Encoding:服务器通过这个头告诉浏览器数据的压缩格式。
    Content-Length:服务器通过这个头告诉浏览器回送数据的长度
    Content-Type:服务器通过这个头告诉浏览器回送数据的类型
    Last-Modified:告诉浏览器当前资源的最后缓存时间
    Refresh:告诉浏览器隔多久刷新一次
    Content-Disposition:告诉浏览器以下载方式打开数据
    Transfer-Encoding:告诉浏览器数据的传送格式
    ETag:缓存相关的头

  • ········三种禁止浏览器缓存的头字段:
    Expires:告诉浏览器把回送的资源缓存多长时间 -1或0则是不缓存
    Cache-Control:no-cache
    Pragma:no-cache
    服务器通过以上两个头,也就是控制浏览器不要缓存数据
    实体内容:代表服务器向客户端回送的数据

  • http状态码及表示的状态信息
    200(正常)
    表示一切正常,返回的是正常请求结果。
    302/307(临时重定向)
    指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
    304(未修改)
    表示客户机缓存的版本是最新的,客户机应该继续使用它。
    403(禁止)
    服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致。
    404(找不到)
    服务器上不存在客户机所请求的资源。
    500(内部服务器错误)
    服务器端的CGI、ASP、JSP等程序发生错误。

  • 怎么实现http的断点续传
    要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。
    HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 RangeContent-Range字段,一个最简单的断点续传实现大概如下:

    1.客户端下载一个1024K的文件,已经下载了其中256K
    2.网络中断,客户端请求续传,因此需要在HTTP头中申明本次需要续传的片段:
    Range:bytes=256000-
    这个头通知服务端从文件的256K位置开始传输文件
    3.服务端收到断点续传请求,从文件的256K位置开始传输,并且在HTTP头中增加:
    Content-Range:bytes 256000-/1024000
    并且此时服务端返回的HTTP状态码应该是206,而不是200。

终端在发起续传请求时应该在HTTP头中申明If-Match 或者If-Modified-Since 字段,帮助服务端判别文件变化。

另外RFC2616中同时定义有一个If-Range头,终端如果在续传是使用If-Range。If-Range中的内容可以为最初收到的ETag头或者是Last-Modfied中的最后修改时候。服务端在收到续传请求时,通过If-Range中的内容进行校验,校验一致时返回206的续传回应,不一致时服务端则返回200回应,回应的内容为新的文件的全部数据。

0 0
原创粉丝点击