首先,有个基本的概念
HTTP协议是基于TCP/IP协议模型来传输信息的
HTTP协议用于在Internet上发送和接收消息,HTTP协议是一种请求-应答式的协议,客户端发送一个请求,服务器返回该请求的应答,HTTP协议使用可靠的TCP连接,默认端口是80. 在HTTP中,Client/Server之间的会话总是由客户端通过建立连接和发送HTTP请求包初始化,服务器不会主动联系客户端或要求与客户端建立连接,浏览器和服务器都可以随时中断连接. HTTP请求 先说一下HTTP请求,http请丢是由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成, 请求数据可以有,也可以没有,但空行是不能省略的,用以将请求头和请求内容分开. 1.请求行: 请求行分为三个部分:请求方法、请求地址和协议版本. 请求方法: HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。 请求地址: URL:统一资源定位符,是一种标志资源位置的方法。 协议版本: 协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1 2.请求头: 请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔. 3.请求数据: 可选部分,比如GET请求就没有请求数据。 下面是一个POST方法的请求报文:POST /index.php HTTP/1.1 请求行
Host: localhost User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 请求头 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: zh-cn,zh;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: http://localhost/ Content-Length:25 Content-Type:application/x-www-form-urlencoded 空行 username=aa&password=1234 请求数据HTTP响应HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。
1.状态行: 由3部分组成,分别为:协议版本,状态码,状态码描述。
其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。
状态码
状态代码为3位数字。
1xx:指示信息--表示请求已接收,继续处理。 2xx:成功--表示请求已被成功接收、理解、接受。 3xx:重定向--要完成请求必须进行更进一步的操作。 4xx:客户端错误--请求有语法错误或请求无法实现。 5xx:服务器端错误--服务器未能实现合法的请求。下面列举几个常见的:
3.响应数据
用于存放需要返回给客户端的数据信息。下面是一个响应报文的实例:
HTTP/1.1 200 OK 状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT 响应头部 Server: Apache/2.2.8 (Win32) PHP/5.2.5 X-Powered-By: PHP/5.2.5 Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 4393 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 空行 如何使用curl命令 curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。如何用Chrome开发者工具查看 HTTP 请求和响应 打开Chrome浏览器的任意一个页面,右键->检查->Network 然后输入网址或直接刷新页面,就可以看到浏览器与服务器交互的信息,随便点击一个,在右边就会显示出该文件请求和响应的过程.