这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » HTTP协议理解与应用总结(转自开源中国)

共2条 1/1 1 跳转至

HTTP协议理解与应用总结(转自开源中国)

高工
2013-10-25 15:12:23     打赏
Request & Response

Request格式

Response格式

Status Code

http的状态码有将近60个,我这里主要记录一些常见的非正常情况下产生的状态码,在平常应用中或多或少会碰到,有助于我们去理解和发现问题。

开源中国社区 开源项目发现、使用和交流平台 当前访客身份: 游客 [ 登录 | 加入开源中国 ] 你有0新留言 软件代码讨论区新闻博客 软件 豌豆 豌豆 关注此人 关注(7) 粉丝(17) 积分(8) 技术改变生活! .发送留言 .请教问题 博客分类 阅读排行
  1. 1. HTTP协议理解与应用总结
  2. 2. MySQL使用与优化总结
  3. 3. Java基础——同步与锁
  4. 4. Memcached应用那些事儿
  5. 5. Java基础——常用Map的实现细节
  6. 6. Linux下php+imagemagick的图片处理环境安装(支持webp格式)
最新评论 访客统计
  • 今日访问:142
  • 昨日访问:266
  • 本周访问:5030
  • 本月访问:5156
  • 所有访问:5162
空间 » 博客 » Http » 博客正文 HTTP协议理解与应用总结 567人收藏此文章, 我要收藏 发表于5天前(2013-10-21 00:39) , 已有6260次阅读 ,共19个评论 摘要: 总结了自己在实际工作场景中遇到的与http协议相关的一些内容的理解。

目录:[ - ]

  • Request & Response
  • Status Code
  • Headers
  • 1.缓存控制
  • 2.断点请求
  • 3.编码
  • 4.其他
  • Session和Cookie
  • Request & Response

    Request格式

    <request-line> 比如:GET /api/index.json HTTP/1.1
    <headers> 比如:Accept: */*; User-Agent: Mozilla/4.0;……
    <blank line>
    [<request-body>] 比如:id=1&timestamp=xxxxxx

    Response格式

    <status-line> 比如:HTTP/1.1 200 OK
    <headers> 比如:Content-Type: application/json;……
    <blank line>
    [<response-body>] 比如:{"id":1,"username":"testuser"}
    Status Code

    http的状态码有将近60个,我这里主要记录一些常见的非正常情况下产生的状态码,在平常应用中或多或少会碰到,有助于我们去理解和发现问题。

    206 - 断点下载时用到,客户端请求了一部分内容,服务器成功把这部分内容返回给它,这时候就是用这个状态。

    301 - 永久跳转,原地址不存在了,url被指向到另一个地址。这个主要是搜索引擎相关,影响爬虫的检索行为。

    302 - 临时跳转,服务器会返回一个新的url给客户端,客户端可以继续访问这个url来获取内容。

    304 - 资源没有改变,客户端可以使用本地缓存的内容,常见于静态内容访问。

    413 - 请求实体太大。常见的情况是上传大文件,但超出了服务器(比如nginx)限制。或者请求头或请求体超出了后端的server(比如tomcat)的设置(比如当前域名下cookie太多,超出了请求头限制)

    416 - 跟断点续传有关,客户端请求的范围超出了服务器上文件大小。

    500 - 服务器内部错误,不能返回正常的结果。比如最常见的应用抛出空指针异常未进行处理。

    502 - 网关错误。常见的情况是反向代理后端的服务器(比如resin或tomcat)没有启动。

    503 - 服务不可用。比如服务器负载太高或者服务器已经停止服务。

    504 - 网关超时。比如请求时长超出了服务器的响应时间限制。

    Headers

    http headers分为请求头(Request Header)和响应头(Response Header)两类。下面是我们经常用到的一些header.

    1.缓存控制

    在互联网站的应用中,缓存几乎无处不在,在基于http的服务中,我们也可以对一些不常改变的内容在客户端进行缓存,这样在多次访问中可以复用缓存内容,加快访问速度,提升用户体验。http的协议里规定了一些用于缓存控制的http消息头:

     

    在我们的实际业务场景下,http的缓存具有非常大的用途,下面列举一些:

    1、充分利用客户端的资源,比如一些客户端需要频繁访问的静态文件,像LOGO,广告图等,完全可以缓存在客户端本地。这样可以减少网络请求,加快客户端展示,还能减少服务器请求的压力。

    2、我们的一些静态内容,比如新闻,博客等,在被搜索引擎爬虫抓取的时候,通过控制缓存参数,就可以减少爬虫的抓取频率,减少不必要的资源浪费。

    3、如果我们的静态资源使用了CDN,那么设置了http缓存就可以在CDN节点上保存一份文件,减少CDN的回源次数,减少网络延时和源站服务器压力。

    2.断点请求 3.编码 4.其他 Session和Cookie

    http请求是无状态的请求,但是在我们的互联网应用中,经常需要标识用户状态信息来完成一些交互性的操作,比如用户认证要记录用户登录状态,购物车应用要记住用户选择的商品,广告投放应用要记录用户的历史浏览行为等等。这里就会用到session和cookie了。

    在这里我只是总结了自己在工作中遇到的与http协议相关的一些内容的理解,http协议还有很多需要挖掘的东西,也需要不断去探索,对http协议的理解将会给我们的开发应用带来很大的便利。

    最后,推荐两个很NB的http调试工具:fiddler(windows)和charles(mac)有http代理功能,对于不是基于浏览器的http应用(比如mobile app),可以用这两个工具来监控http请求。

     

     


    高工
    2013-10-26 21:15:07     打赏
    2楼
    有点乱啊,不过学习了。

    共2条 1/1 1 跳转至

    回复

    匿名不能发帖!请先 [ 登陆 注册 ]