学点HTTP知识

不学无术

又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊。平时也看许多的技术文章,为什么到了关键时刻就答不上来呢?

确实发现一个问题,光看是没有用的,需要实践。看别人说的头头是道自己也觉得理解了,但发现再让自己复述一遍可能完全就答不上来。这就是因为看别人的文章更像看小说,脑子里跟着作者的思路感觉好像挺懂的,其实也就是过眼云烟。所以想要学好技术

  • 一方面是要看别人的总结,比如文章、书、源代码
  • 然后就是要自己去总结,比如写写博客,跑跑书里面的代码,这样可以加深理解。
  • 最后就是要去用,特别是在工作中。如果一项技能已经用的非常熟练了想要忘都难。

为了让自己对HTTP知识多一点印象,写一篇博客吧。由浅入深,慢慢来。

先简单认识http

HTTP是超文本传输协议,这个协议是应用层协议。我的理解是在服务器生成一段文本,在网络上传输,客户端可以对其解析成视图并提供交互。

http是由请求与响应构成,在设计时是无状态协议,这样每一次的操作基本就是客户端发起请求,服务端返回响应。

Http请求与响应都包含:请求行、消息头和消息体。

常见的Header

说起header不复杂,但细细一看蛮多学问在里面,只不过确实有点多,主要是还是先关注一些常见的吧。

通用头域

  • Cache-Control:指定请求和响应遵循的缓存机制
  • Connection:keep-alive:保持与服务器的TCP连接
  • Date:消息发送的日期时间
  • Pragma:用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。
  • Transfer-Encoding:chunked:分块编码

Request Header

  • Request URL:请求的URL
  • Request Method:请求的方法(OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT、PATCH)
  • Remote Address:远程服务器的地址
  • Accept:指定客户端接收的MIME类型(text/html,application/xhtml+xml,application/xml)
  • Accept-Encoding:指定客户端接收的编码,通常用于指定压缩算法(gzip, deflate, sdch)
  • Accept-Language:指定客户端接收的语言(zh-CN,zh)
  • Accept-Charset:指定客户端接收的字符集(gb2312,uft-8)
  • Cookie:客户端cookie信息
  • Host:请求的域
  • User-Agent:发起请求的用户信息,操作系统、浏览器版本等
  • If-Modified-Since:服务器上一次修改的时间

response header

  • Content-Encoding:响应包的编码及压缩算法(gzip)
  • Content-Type:响应包的资源类型(text/html; charset=utf-8)
  • Expires:过期时间
  • Last-Modified:最后修改时间

常见的状态码

  • 200:请求已成功
  • 201:请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回
  • 301/302:重定向
  • 304:客户端请求的资源未修改
  • 400:错误的请求包
  • 404:请求失败,指定资源未找到
  • 500:服务器内部错误,通常是服务器出错了没法返回响应包

注:此文章为原创,欢迎转载,请在文章页面明显位置给出此文链接!

若您觉得这篇文章还不错请点击下右下角的推荐,非常感谢!

http://www.cnblogs.com/5207

时间: 2024-10-09 22:44:14

学点HTTP知识的相关文章

编写三各类Ticket、SaleWindow、TicketSaleCenter分别代表票信息、售票窗口、售票中心。 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。

package com.swift; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TicketSaleCenter { public static void main(String[] args) { /* * 第6题: 编写三各类Ticket.SaleWindow.TicketSaleCenter分别代表票信息.售票

最近学到的知识概述,求大神指点后续的路该怎么规划

求大神指导迷津: 前端的路,已经走了一年多了,从懵懂地编码到现在的熟悉的操作,学会使用了svn.git.webstrom这些版本控制和开发软件,尤其是当学会用webstrom进行git提交代码时,才很惊喜的发现,学会使用好用的工具可以节省很多时间,大大提升工作的效率![工具很重要]. 在搭建好的框架下,去开发设计好的网页图,对我来说都是没问题的了,前段时间,在没有人指导的情况下,自己摸索着在现有的框架下,调用ztree完成一个功能,包括API接口该如何设计.保存后如何向后台传数据.[自学能力在成

在阅读sqlmap源码时学到的知识--检查运行环境

最近在读sqlmap的源码,懵懵懂懂中页大约学到了一些知识(说给自己听的话:由此可见,所谓的能够解决所有遇到问题的python水平,只能说明你遇见的都是简单的需求....),老规矩,在这里写一下,一则备忘,二则巩固 首先,sqlmap第一步 1 def main(): 2 """ 3 Main function of sqlmap when running from command line. 4 """ 5 6 try: 7 checkEnvi

根据刚学的网络知识画的简单的图

注:上图中仅是自己按照刚学的知识点画的图,没有任何其他实质用途.

语言入门必学的基础知识你还记得么?

不管我们学习什么语言,一开始都是语法,对于面向对象的语言来讲,学习完语法之后,就是OOP了,主要还是三大概念:继承,多态,封装.而且我们经常也会遇到一些面试题,会考察我们父子类之间的继承关系等. 这段时间深造ASP.NET-MVC框架,研读<<asp.net-mvc框架揭秘>>一书的时候,感觉到了自己的不足与渺小.尽管大三就看过这本书,但那时候看的懵逼,半知半解吧.再过了差不多一年之后再回头看这本书,学到了不同的知识,也看到了不同的一面,这说明自己也是在逐步提升的.这两天研读Con

关于做团队项目时需求分析工作中所学的一部分知识

近期,我们小组在完成了立项说明书后,开始着手准备需求分析说明书的相关工作,在需求分析过程中,少不了用结构化的方法或面向对象的方法进行需求建模,在这其中,需要画很多图形,比如:DFD图.E-R图,状态转换图等,经过实践发现,要画好这些图,除了需要会设计外,还需要熟练使用相关的软件. 开始时,在电脑上安装了IBM的Rational Rose,因为听老师说可以生成部分代码,但安装以及破解过程却是极其复杂的,安装好之后,发现学习使用其进行UML建模,并不是我想的那么简单,为了使需求说明书能够尽快写好,使

掌握了学习方法才能学到更多知识

在某段时间保持专注,专攻某一门知识.从多种角度去观察,了解它 建立自己的知识库,划分核心知识,相关知识,边缘知识.以大脑为主存,以笔记本为辅存 先收集,再整理,再消化.吸收.不能理解的地方暂时挂起. 对基础性的地方不要放过,要有穷根深挖的精神

做软件测试员需要学的专业知识

首先,要有宽泛的计算机基础知识.微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过.都精通不大可能,因为人的兴趣都不相同,但是,这些功课的基本知识点是应当了解的.在做测试的时候,我们需要考虑到方方面面的事情.例如对于一个用C写的上网拨号程序,测试员需要考虑: (1) 程序的功能是否正确:(要求计算机知识) (2) 是否符合用户的使用习惯:(要求界面设计知识和换位思考能力) (3) 性能是否满足要求,例如长时间使用:稳定性:(要求深入的计算机知识) (

iOS狂暴之路---iOS的第一个应用中能学到哪些知识

一.前文回顾 在之前已经介绍了 iOS的学习路线图,因为中间遇到一些Android开发问题,所以就耽搁了一段时间,那么接下来的这段时间我们将继续开始iOS的狂暴之路学习,按照国际惯例,第一个应用当然是我们的HelloWorld程序了.那么本文将会通过这么一个简单的程序来讲解一下iOS中的程序生命周期,应用中关键的几个对象,项目结构,最后在手把手的创建一个空项目. 二.建立简单程序HelloWorld 下面先用Xcode来新建一个HelloWorld程序: 点击下一步即可: 这里和我们在Andro