不学无术
又一次感觉到不学无术,被人一问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://blog.csdn.net/5207