Request格式
Response格式
Status Codehttp的状态码有将近60个,我这里主要记录一些常见的非正常情况下产生的状态码,在平常应用中或多或少会碰到,有助于我们去理解和发现问题。
开源中国社区 开源项目发现、使用和交流平台 当前访客身份: 游客 [ 登录 | 加入开源中国 ] 你有0新留言 软件代码讨论区新闻博客 软件 豌豆 关注此人 关注(7) 粉丝(17) 积分(8) 技术改变生活! .发送留言 .请教问题 博客分类 阅读排行- 1. HTTP协议理解与应用总结
- 2. MySQL使用与优化总结
- 3. Java基础——同步与锁
- 4. Memcached应用那些事儿
- 5. Java基础——常用Map的实现细节
- 6. Linux下php+imagemagick的图片处理环境安装(支持webp格式)
- @aspboy:非常不错的文章. 查看»
- @夕水溪下:引用来自“豌豆”的评论 引用来自“夕水溪下”的... 查看»
- @豌豆:引用来自“夕水溪下”的评论 缓存更新策略中的缓... 查看»
- @夕水溪下:缓存更新策略中的缓存失效,有很多种方案来解决现... 查看»
- @lucky_sunny:很好,赞一个! 查看»
- @hit9:赞一个 查看»
- @kimmking:tcpmon 查看»
- @豌豆:引用来自“凯文加内特”的评论 大sql拆分成小sql... 查看»
- @Juno文仲:赞! 查看»
- @CoserSeu:对Web开发以及Web服务器理解还是有所帮助的。 有... 查看»
- 今日访问:142
- 昨日访问:266
- 本周访问:5030
- 本月访问:5156
- 所有访问:5162
目录:[ - ]
Request格式
<request-line> 比如:GET /api/index.json HTTP/1.1 <headers> 比如:Accept: */*; User-Agent: Mozilla/4.0;…… <blank line> [<request-body>] 比如:id=1×tamp=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个,我这里主要记录一些常见的非正常情况下产生的状态码,在平常应用中或多或少会碰到,有助于我们去理解和发现问题。
Headers206 - 断点下载时用到,客户端请求了一部分内容,服务器成功把这部分内容返回给它,这时候就是用这个状态。
301 - 永久跳转,原地址不存在了,url被指向到另一个地址。这个主要是搜索引擎相关,影响爬虫的检索行为。
302 - 临时跳转,服务器会返回一个新的url给客户端,客户端可以继续访问这个url来获取内容。
304 - 资源没有改变,客户端可以使用本地缓存的内容,常见于静态内容访问。
413 - 请求实体太大。常见的情况是上传大文件,但超出了服务器(比如nginx)限制。或者请求头或请求体超出了后端的server(比如tomcat)的设置(比如当前域名下cookie太多,超出了请求头限制)
416 - 跟断点续传有关,客户端请求的范围超出了服务器上文件大小。
500 - 服务器内部错误,不能返回正常的结果。比如最常见的应用抛出空指针异常未进行处理。
502 - 网关错误。常见的情况是反向代理后端的服务器(比如resin或tomcat)没有启动。
503 - 服务不可用。比如服务器负载太高或者服务器已经停止服务。
504 - 网关超时。比如请求时长超出了服务器的响应时间限制。
http headers分为请求头(Request Header)和响应头(Response Header)两类。下面是我们经常用到的一些header.
1.缓存控制在互联网站的应用中,缓存几乎无处不在,在基于http的服务中,我们也可以对一些不常改变的内容在客户端进行缓存,这样在多次访问中可以复用缓存内容,加快访问速度,提升用户体验。http的协议里规定了一些用于缓存控制的http消息头:
在我们的实际业务场景下,http的缓存具有非常大的用途,下面列举一些:
1、充分利用客户端的资源,比如一些客户端需要频繁访问的静态文件,像LOGO,广告图等,完全可以缓存在客户端本地。这样可以减少网络请求,加快客户端展示,还能减少服务器请求的压力。
2、我们的一些静态内容,比如新闻,博客等,在被搜索引擎爬虫抓取的时候,通过控制缓存参数,就可以减少爬虫的抓取频率,减少不必要的资源浪费。
3、如果我们的静态资源使用了CDN,那么设置了http缓存就可以在CDN节点上保存一份文件,减少CDN的回源次数,减少网络延时和源站服务器压力。
2.断点请求 3.编码 4.其他 Session和Cookiehttp请求是无状态的请求,但是在我们的互联网应用中,经常需要标识用户状态信息来完成一些交互性的操作,比如用户认证要记录用户登录状态,购物车应用要记住用户选择的商品,广告投放应用要记录用户的历史浏览行为等等。这里就会用到session和cookie了。
在这里我只是总结了自己在工作中遇到的与http协议相关的一些内容的理解,http协议还有很多需要挖掘的东西,也需要不断去探索,对http协议的理解将会给我们的开发应用带来很大的便利。
最后,推荐两个很NB的http调试工具:fiddler(windows)和charles(mac)有http代理功能,对于不是基于浏览器的http应用(比如mobile app),可以用这两个工具来监控http请求。