zoukankan      html  css  js  c++  java
  • HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头

    用于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
    服务器通过以上两个头,也就是控制浏览器不要缓存数据

    实体内容:代表服务器向客户端回送的数据

    l200(正常)
    表示一切正常,返回的是正常请求结果。
    l302/307(临时重定向)
    指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
    l304(未修改)
    表示客户机缓存的版本是最新的,客户机应该继续使用它。
    l403(禁止)
    服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致。
    l404(找不到)
    服务器上不存在客户机所请求的资源。
    l500(内部服务器错误)
    服务器端的CGI、ASP、JSP等程序发生错误。
    1.请按自己的理解简述HTTP 1.1与HTTP 1.0的区别。
    2.请描述HTTP请求消息和HTTP响应消息的组成结构,并各举一例进行说明。
    3.浏览器分别在哪些情况下使用GET方式和POST方式访问WEB服务器?如果浏览器传递给WEB服务器的参数内容超过1K,应该使用那种方式发送请求消息?
    4.请描述200、302、304、404和500等响应状态码所表示的意义。

    5.请列举三种禁止浏览器缓存的头字段,并写出相应的设置值。

    解答:

    1.HTTP1.0对于每个连接都的建立一次连接一次只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Host字段;
    而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

    2.请求消息结构:一个请求行、若干消息头、以及尸体内容,当中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
    响应消息结构:一个状态行、若干消息头、以及尸体内容,当中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。
    两者的区别:就是请求消息有请求行,响应消息有状态行。
    GET /mail/aa.html HTTP/1.1
    Accept: text/html, application/xhtml+xml, */*
    Accept-Language: zh-CN
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
    Accept-Encoding: gzip, deflate
    Host: localhost:8080
    If-Modified-Since: Wed, 17 Oct 2012 09:35:13 GMT
    If-None-Match: W/"62-1350466513174"
    Connection: Keep-Alive

    HTTP/1.1 304 Not Modified
    Server: Apache-Coyote/1.1
    ETag: W/"62-1350466513174"
    Date: Wed, 17 Oct 2012 09:45:38 GMT

    3.数据量不大,因为GET方式数据量限制1K,不带有保护数据的情况下使用GET方式访问WEB服务器;数据量大,而且带有需要保护的数据时使用POST方式访问WEB服务器。
    如果浏览器传送服务器的数据量超过1K,应使用POST方式访问服务器,因为POST方式向服务器传送是数据时,会先把传送的数据打包发送到WEB服务器。

    4.响应状态吗表示的意义:
    200:表示成功,正常结果;
    302:表示重定向,转到别的站点;
    304:表示未修改;
    404:表示找不到资源;
    500:表示内部服务器错误;

    5.Expires:告诉浏览器把回送的资源缓存多长时间 -1或0则是不缓存
     Cache-Control:no-cache
     Pragma:no-cache

  • 相关阅读:
    在VC6.0中虚函数的实现原理
    札记Microsoft基本类库应用程序框架
    typedef用法剖析
    申请成功记录记录
    vc++6.0环境中swap函数
    ubuntu12.04 安装JDK7
    N皇后问题的位运算求解——目前最快的方法
    Linux常用命令小结
    Ubuntu添加自己的桌面快捷方式
    C++静态成员函数小结(转)
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4587889.html
Copyright © 2011-2022 走看看