HTTP协议 超文本传输协议 基于TCP/IP通讯协议来传递数据
主要特点:
-
简单快速
-
灵活
-
无连接
-
无状态
-
支持B/S及C/S模式
URL 统一资源定位符
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
-
http: 协议名称
-
www.aspxfans.com 域名部分
-
8080 端口部分
-
/news/ 虚拟目录部分
-
index.asp 文件名部分
-
#到最后 锚部分
-
?到#中间的部分 参数部分
HTTP 请求消息Request,格式包括
-
请求行 请求类型,访问的资源及HTTP版本(不同请求区别在与请求行的 GET/POST请求头)
-
请求头部 说明服务器要使用的附加信息,浏览器相关的内容,由浏览器来自己定义
-
空行 请求头部后面的空行是必须的
-
请求数据 请求数据如name=多少 id等于多少等等
GET /562f25980001b1b106000338.jpg HTTP/1.1
Host img.mukewang.com
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept image/webp,image/*,*/*;q=0.8
Referer http://www.imooc.com/
Accept-Encoding gzip, deflate, sdch
Accept-Language zh-CN,zh;q=0.8、
HTTP响应消息Response,格式包括
-
状态行,由HTTP协议版本号、状态码、状态消息组成
-
消息报头,用来说明客户端要使用的一些附加信息
-
空行
-
响应正文,服务器返回给客户端的文本信息
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
HTTP之状态码:三位数字组成,第一个数字定义响应的类别
1xx:指示信息--表示请求已经接受,继续处理
2xx:成功,表示请求已被成功接收、理解、接受
3xx: 重定向,要完成请求必须进行更进一步的操作
4xx: 客户端错误,请求有语法错误或请求无法实现
5xx: 服务器端错误,服务器未能实现合法的请求
常见状态码
200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在,输入了错误的URL
500 Internal Server Error 服务器发生了不可预期的错误
503 Server Unavailable 服务器当前不能处理客服端的请求,一段时间后可能恢复正常
HTTP请求方法:
1.0定义了三种请求方法:
GET:请求指定的页面信息,并返回实体主体
POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
HEAD:类似get请求,只不过返回的响应中没有具体的内容,用于获取报头
HTTP工作原理:
工作步骤:
-
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口,建立一个TCP套接字连接
-
发送HTTP请求,即上面的上面的request等
-
服务器接受请求并返回HTTP响应,Web服务器解析请求,定位请求资源,即response
-
释放连接TCP
-
客户端解析服务器返回的HTML内容
浏览器输入URL,按下回车之后会经历以下流程:
-
浏览器像DNS服务器请求解析该URL中的域名所对应的IP地址
-
解析IP地址后,根据ip地址和端口,和服务器建立TCP连接
-
浏览器发出读取文件的HTTP请求,改请求报文作为TCP三次握手的第三个报文的数据发给服务器;
-
服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器;
-
释放TCP连接
-
浏览器将该html文本并显示内容
GET、POST的区别
-
GET会将参数附加到地址上,而POST请求不会
-
浏览器和服务器对URL长度一般来说会有限制,所以采用GET方法提交的时候,传输数据就会受到URL长度的限制。
-
POST的安全性要比GET的安全性高,通过GET提交数据,数据会明文显示在URL上