赞
踩
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,设计HTTP的最初目的是为了提供一种发布和接收HTML页面的方法。
HTTP是客户端和服务器端之间进行请求和响应的一个标准。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。一般将该客户端称为用户代理程序。服务器对客户端请求进行响应,服务器上存储着一些资源,如HTML文件和图像。一般将这类服务器称为Web服务器。
TCP/IP协议是互联网上最流行的应用,虽然HTTP协议并没有规定必须使用TCP/IP协议,只要求其下层协议提供可靠的传输。但大多数HTTP协议仍然使用TCP协议作为其传输层。
HTTP协议使用统一资源定位符URL来访问网络资源。
(1) 协议,可选。告诉服务器采用哪种通信协议。可选的值有http和https。
(2) 服务器。要访问的物理服务器的唯一名称,该名称通过域名服务器映射为唯一的IP地址。这里既可以使用服务器名称也可以使用IP地址,但显然服务器名称更容易记忆。
(3) 端口,可选。默认端口为80,Web服务器可以根据需要配置端口。
(4) 路径,服务器上所请求资源位置的路径。使用Unix目录格式描述Web服务器的目录层次,其中,appname为Web应用名称,path为路径。
(5) 资源,请求文档的名称。可以是HTML页面、Servlet、PDF文件、图像、音频文件或视频文件等服务器提供服务的文档类型。如果本部分省略,大多数服务器会默认查找index.html页面或设置的欢迎页面。
(6) 查询字符串,可选。如果为HTTP GET请求,额外的参数会作为查询字符串附加到URL的末尾,以问号“?”起始,每个参数以“名=值”的形式出现,多个参数间用“&”分隔。
HTTP请求和响应
通常,Web服务器一直使用指定端口(默认为80端口)监听客户端的请求。请求由客户端发起,创建一个到服务器指定端口的TCP连接。一旦收到请求,服务器会向客户端返回一个状态,比如“HTTP/1.1 200 OK”,以及返回的内容,如请求的文件、错误消息、或者其他信息,这就是服务器端的响应。
HTTP 1.1协议总共定义了八种方法(也叫“动作”)来操纵指定的资源,其中,最重要的方法只有两个——GET方法和POST方法。
常见的请求头标记列示如下:
(1) GET或POST:请求类型,后接请求资源、协议和版本
(2) Host:主机和端口
(3) Connection:是否使用持续连接
(4) User-Agent:客户端浏览器的名称
(5) Accept:浏览器可接受的MIME类型
(6) Accept-Encoding:浏览器知道如何解码的数据编码类型
(7) Accept-Language:浏览器指定的语言
(8) Accept-Charset:浏览器支持的字符编码
(9) Cookie:保存的Cookie对象
响应状态
响应信息的第一行就是响应状态,内容依次是当前HTTP版本号,三位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。 状态代码的第一个数字代表当前响应的类型,xx表示两位数字。
(1) 1xx消息:请求已被服务器接收,继续处理
(2) 2xx成功:请求已成功被服务器接收、理解、并接受
(3) 3xx重定向:需要后续操作才能完成这一请求
(4) 4xx请求错误:请求含有词法错误或者无法被执行
(5) 5xx服务器错误:服务器在处理某个正确请求时发生错误
响应体
响应头之后紧跟着一个空行,然后接响应体。响应体就是Web服务器发送到客户端的实际内容。除网页外,响应体还可以是诸如Word、Excel或PDF等其他类型的文档,具体是哪种文档类型由Content-Type指定的MIME类型决定。MIME是多功能Internet邮件扩展(Multipurpose Internet Mail Extensions)的英文字首缩写,设计MIME的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。HTTP协议支持MIME类型之后,使得HTTP传输的不仅是普通的文本,而是丰富多彩的各种类型的文档。
响应头
响应头用于指示客户端如何处理响应体,告诉浏览器响应的类型、字符编码和字节大小等信息。常用的响应头列示如下。
(1) Allow:服务器支持哪些请求方法(如GET、POST等)
(2) Content-Encoding:文档的编码(Encode)类型。只有在解码之后才可以得到Content-Type头指定的内容类型
(3) Content-Length:内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据
(4) Content-Type:表示后面的文档属于什么MIME类型
(5) Date:当前的时间
(6) Expires:文档过期时间
(7) Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计
(8) Server:服务器名称
(9) Set-Cookie:设置与页面关联的Cookie
(10) WWW-Authenticate:客户应该在Authorization头中提供的授权信息类型
访问新浪
GET与POST请求
1)GET请求和POST请求的区别 HTTP GET和HTTP POST是开发Web应用的两种最重要的请求方法。
两者最重要的区别是POST有体(body),而GET没有。 GET和POST都能发送参数,只是GET所发送的参数长度受限于请求行。下面以实例说明两者的区别。
GET请求的请求头
GET /requestresponse/login.do?username=%E5%BC%A0%E4%B8%89&userpwd=123456 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://localhost:8080/requestresponse/login.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
第一行为请求行。第一个单词指定HTTP方法,这里是GET。紧接着的是指向Web服务器上资源的路径,问号之后的是查询字符串,在GET请求中,如果有参数,可以附在请求URL之后。查询字符串百分号之后的两位数字是16进制数,这里是汉字“张三”的URL编码。最后的是Web浏览器与服务器通信的协议版本,这里是HTTP/1.1。
POST请求的请求头
POST /requestresponse/login.do HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 42
Cache-Control: max-age=0
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://localhost:8080/requestresponse/login.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
username=%E5%BC%A0%E4%B8%89&userpwd=123456
第一行也是请求行,但与GET不同的是没有查询字符串。请求行后面的几行都是请求头,注意到Content-Length表示请求体消息的长度,这里为42字节。请求头之后又一个空行,后面紧接请求体。
看起来似乎GET和POST请求的区别在于所能发送参数数据的长度。真是这样吗?
当使用GET请求时,参数数据显示在浏览器地址栏,紧接真实URL之后,用问号分割。显然,如果参数数据含有敏感信息,任何人都不希望这样直接显示在地址栏上。因此,安全性也是要考虑的因素。
如果希望客户能够收藏网页,那么,GET请求能够收藏,但POST请求则不能。
除了长度、安全和收藏,GET和POST请求还有一个关键的区别,那就是它们具体设计来干什么。GET请求意味着获取信息,简单的、周期性的检索。当然,可以使用参数来帮助说明希望服务器送回哪些信息,但最关键的是:GET请求没有改变服务器上的东西。POST请求则不然,本身意味着发送需要处理的数据。因此,见到POST请求,就要想到“更新”,即,使用POST体的数据去改变服务器上的一些东西。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。