作为web开发人员,了解一些http协议的知识很有必要。本文简单介绍了HTTP协议的知识,若有错误的地方,望大家指正。
URL的格式:
http://host[":"port][abs_path]
host: 代表主机域名或IP地址 port: 端口号,缺省端口80 abs_path : 请求资源的URL,如果没有,填 "/",通常浏览器会帮我们自动完成。 EG: 1、输入:www.cnblogs.com 浏览器自动转换成:http://www.cnblogs.com/HTTP的请求由3部分组成:请求行、请求头、请求体。 SP代表空格、CRLF代表换行 浏览器必须以这个格式发送请求,服务器才能正常解析和响应。
get和post是最常用的方法,简单来说,前者用于获取数据,后者用于提交数据。
HTTP的响应也是由3个部分组成:响应行、响应头,响应体 响应行:status code 表示响应的状态码,description是描述信息。 同样 SP代表空格、CRLF代表换行, 响应必须以这种规范格式发送给浏览器,浏览器才能正常解析并显示。
200段是成功;300段需要对请求做进一步的处理;400段表示客户端请求错误;500段是服务器的错误 常见响应码:
"200" : OK "302" : Found 重定向. "400" : Bad Request 错误请求,发出错误的不符合Http协议的请求 "403" : Forbidden 禁止 "404" : Not Found 未找到。演示访问一个不存在的页面看报文 "500" : Internal Server Error 服务器内部错误。演示页面抛出异常。 "503" : Service Unavailable。一般是访问人数过多。PS:会在文章的末尾为大家提供一份HTTP状态码大全的文档。
HTTP消息报头分4类:普通报头、请求报头、响应报头、实体报头 每一个报头域都是由名字+“:”+空格+值 组成,消息报头域的名字是大小写无关的。
应用于所有请求和响应消息且和请求体与响应体无关的信息就存放在普通报头中。
Cache-Control: no-cache (用于指示请求或响应消息不能缓存) Date 普通报头域表示消息产生的日期和时间 Connection: close/keep-alive (是否开启长连接)客户端向服务器端传递请求的附加信息以及客户端自身的信息存放在请求报头 常用的请求报头:
Accept: text/html,application/xhtml+xml,application/xml; 指定客户端接受哪些类型的信息。 Accept-Charset: iso-8859-1,gb2312 客户端接受的字符集 (缺省是任何字符集都可以接受。) Accept-Encoding: gzip,deflate,sdch 可接受的内容编码。 (缺省是各种内容编码都可以接受。) Accept-Language: zh-CN,zh 指定语言。(缺省各种语言都可以接受。) Authorization 用于证明客户端有权查看某个资源 Host: www.cnblogs.com 被请求资源的Internet主机和端口号 (缺省端口号:80) 这个报头是必需的 User-Agent: Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) 操作系统、浏览器和其它属性响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。 常用的响应报头:
Location 响应报头域用于重定向接受者到一个新的位置 Server:Apache-Coyote/1.1 服务器信息请求和响应消息都可以传送一个实体。 常用的实体报头:
Content-Encoding: gzip 内容编码 Content-Language: zh-CN 语言 Content-Length: 10 实体正文的长度 Content-Type: text/html;charset=GB2312 返回数据的类型 Last-Modified 实体报头域用于指示资源的最后修改日期和时间。 Expires:Thu,15 Sep 2006 16:23:12 GMT 响应过期的日期和时间。HTTP和HTTPS的主要区别 http:超文本传输协议 https:为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。 HTTPS和HTTP的区别主要如下: 1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全