一、http协议是什么
html是超文本标记语言,超文本是说不仅只有文本还有图片、超链接、音频、视频等。http是超文本传输协议,字面意思就是传输超文本html的一个规则。
http协议是浏览器和服务器之间通信的规则。这个规则规定了浏览器向服务器发送请求的规则以及服务器返回响应数据的规则。
服务器被动的接收浏览器发送的请求然后进行响应。
二、http协议请求
1.发送请求的方式
- 通过浏览器输入url的方式
- 超链接请求(只能是get请求方式)
- 能够提交信息的html:例如form表单、submit类型的input
form表单:action属性指定请求的url,method属性指定请求的方式:post还是get
<form action="http://localhost:8000/hello/checkUser.html" method="GET"></form>
如果请求的网页和表单提交的网页在同一个http服务器上,可以省略 协议、ip和端口写成
<form action="/hello/checkUser.html" method="GET"></form>
2.请求的信息
请求信息包括:请求行、请求头、空行和请求体
POST / HTTP1.1 Host:www.wrox.com User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley
第一部分:请求头,包括请求方式,请求的url、协议版本
第二部分:请求头, 包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
第三部分:空行
第四部分:请求体,请求的数据。(只有post请求有请求体,get请求没有)
它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。
3.get请求和post请求
get请求,主要用于从服务器获取信息。
直接在浏览器输入url ( 或者超链接 )或者form表单提交
请求参数使用?拼接,多个请求用&分割
拼接的方式不安全且有数据大小限制
post请求,用于客户端向服务器提交信息。
form表单提交,并指定method为post请求方式。通过请求的实体将数据交给服务器,不显示在地址栏安全,大小无限制。
4.表单的get和post请求区别
<form action="checkUser.html?opt=xxx" method="GET">
<input type="text" name="username" value="yyy"/>
<input type="text" name="age" value="zzz"/>
<input type="submit" value="submit"/>
</form>
<form action="checkUser.html?opt=xxx" method="POST">
<input type="text" name="username" value="yyy"/>
<input type="text" name="age" value="zzz"/>
<input type="submit" value="submit"/>
</form>
get请求不接收?传递的参数,post请求接收。
三、http协议响应
1.响应信息
服务器接收并处理客户端发过来的请求后会返回一个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>
第一部分:状态行,包括协议名。状态码、状态信息。
第二部分:响应头,包括日期、请求的与实体对应的MIME信息、以及编码方式等多个属性
第三部分:空行
第四部分:响应实体,html超文本标记语言
2.常见状态码
200:成功请求
400:参数类型不匹配
404:找不到资源
403:服务器受到请求但是拒绝服务
500:内部服务器错误