• HTTP详解


     标题虽说是HTTP详解,但是我知道这并不详细,只是个人目前的知识所限。欢迎大家一起学习,大神指点。

      Http(HyperText Transfer Protocol,超文本传输协议)是访问万维网使用的核心通信协议。

      Http使用一种消息的模型:客户端送出一条请求消息,而后由服务器返回一条响应消息,该协议基本上 不需要连接,虽然Http使用有状态的Tcp协议作为它的传输机制,但每次请求与响应交换都自动完成,并且可能使用不同的TCP连接。

    HTTP请求

      HTTP 1.1支持七种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TRACE,常用的为请求方法是GET和POST。

      下面看下对百度的Http的请求(我用Winsock Expert抓的包)

    GET / HTTP/1.1                 
    Host: www.baidu.com
    User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Cookie: BAIDUID=6B67E0960B5F15F76447A5824B7DECBB:FG=1; BDUT=vc541578AFCCB17CC9499F291711DE70C32413980e4830a1  

      第一行的 GET 说明http请求的方法,GET的主要作用就是从WEB服务器获取一个资源

      GET后面是请求的URL(因为我打开的是主页所以是 / ),URL由被请求的资源名称,以及一个包含客户端向该资源提交的参数的可选查询字符串结成。

      HTTP/1.1这个就是说使用的HTTP版本,现在网上基本上也全是1.1版本的.

      Host 当然就是请求的主机了。

      User-Agent:这个是提供生成请求的客户端软件有关的信息,对于普通用户来说,这也就是浏览器的相关信息,看上面就知道我用的是firefox浏览器了,呵呵···

      Accept:告诉服务器愿意接受哪些内容

      Accept-Language:这个当然就是说的是哪一种语言了,zh-cn这个是中文,应该都知道吧···········

      Accept-Encoding:告诉服务器愿意接受那种编码方式

      Connection:这个说的是连接状态········keep-alive即保持连接

      cookie:用于提交服务器向客户发布的其他参数。

    如果浏览其他的网页还会有个Referer的消息头,例如:

    Referer: http://news.baidu.com/

      Referer:用于发出请求的原始URL.

    HTTP响应

      在来看看百度的响应

    HTTP/1.1 200 OK
    Date: Sun, 02 Sep 2012 05:04:11 GMT
    Server: BWS/1.0
    Content-Length: 4149
    Content-Type: text/html;charset=gbk
    Cache-Control: private
    Expires: Sun, 02 Sep 2012 05:04:11 GMT
    Content-Encoding: gzip
    Connection: Keep-Alive

      响应的第一行,分别是使用的HTTP版本;请求结果的数字状态码(200是做常用的状态码),它表示成功提交请求,正在翻译被请求的资源;最后的OK,进一步说明响应状态,浏览器不将它用于任何目的。

      Data这就不用说了吧。

      Server:指明所使用的WEB服务器软件,有时还包括其他信息,如所安装的模块和服务器操作系统,但是其中包含的信息可能并不准确。这里显示BWS/1.1这服务器还真没听说过,难道是百度自己开发的·····

      Content-Length:规定消息主体的字节长度。

      Content-Type:表示消息主体中包含一个HTML文档

      Cache-Control:缓存控制。想多了解点看这里http://baike.baidu.com/view/9238254.htm

      Expires:缓存的失效日期

      Content-Encoding:编码方式

      Connection:和上面请求一样。

    GET方法和POST方法介绍--------摘自 The Web Application Hacker's Handbook 一书

      Get方法的作用在于获取资源,它可以以URL查询字符串的形式向被请求的资源发送请求,这使得用户可将一个包含动态资源的URL标注为标签,用户自己或其他用户可以重复利用它随后获取的等价资源。URL显示在屏幕上,并被记录在许多地方,如浏览器的历史记录和web服务器的访问日志中,如果单击外部链接,还可以用Referer消息头将他们传送到其他站点。因此,请勿使用查询字符串传送任何敏感信息。

      Post方法的主要作用是执行操作,使用这个方法可以在URL查询字符串的消息主体中发送请求参数,尽管仍然可以将URL标注为书签,但书签中并不包含主体发送的任何参数许多维护URL日志的文职及Referer消息头也将这些参数排除在外。因为POST方法旨在执行操作,如果用户单击浏览器上的后退按钮,返回一个使用这种方法访问的页面,,那么浏览器不会自动重新发送请求,而是就即将发生的操作想用户发出警告。

    欢迎各路大神指正批评,菜鸟一起学习········

  • 相关阅读:
    5.6移植Madplay到开发板
    5.4.Makefile
    5.3交叉工具链使用
    5.2嵌入式linux程序编译与调试
    5.1Minicom 通信配置-linux环境
    7.点亮led的操作
    6、异常向量表的学习---设置SVC模式
    4.协处理器访问指令
    3.Arm机器码
    android RelativeLayout控件或view实现叠加效果
  • 原文地址:https://www.cnblogs.com/scrat/p/2667527.html
Copyright © 2020-2023  润新知