HTTP协议
一、简介
1、http简介
http协议(Hypertext Transfer Protocol,超文本传输协议)是一个基于请求与响应模式的无状态、无连接的应用层协议。
只有遵循统一的 HTTP 请求格式,服务器才能正确解析不同客户端发的请求,同样服务器遵循统一的响应格式,客户端才得以正确解析不同网站发过来的响应
2、请求过程
打开一个网站的过程是:客户端(浏览器)发送请求到服务端(你打开的网站所在的服务器),服务端接收到请求并处理返回数据给客户端(浏览器),我们就能在浏览器中看到数据
3、请求方式
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD。
HTTP1.1新增了五种:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 。
GET/POST两种类型常用:
GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在请求体里面。
1)GET :一般向服务器获取数据用get请求。请求指定的页面信息,并返回实体主体。
2)POST:一般向服务器发送数据用post请求(例如提交表单或者上传文件)。数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。
3)PUT:从客户端向服务器传送的数据取代指定的文档的内容。
4)HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。它的好处在于,这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
5)DELETE 请求服务器删除指定的页面。
6)CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7)OPTIONS 允许客户端查看服务器的性能。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
8)TRACE 回显服务器收到的请求,主要用于测试或诊断。
二、request(http请求)
一个请求中包含请求头和请求体。
1、请求url详解
URL:统一资源定位符也就是我们说的网址,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
如下为百度输入http搜索请求的url:
URL详解:
1.协议类型(或称为服务方式) --- http/https
2.主机地址或域名(有时也包括端口号,默认端口是80可以省略)
www.xxx.com --域名
192.168.1.1:8888 --地址+端口号
localhost:8080 --localhost为本机地址
3.请求的路径,如目录和文件名等(host之后,?之前)。 /index /s
4.? --问号是分割符合
5.参数 --tn=baidu 存在多个参数用&分隔
2、请求头
user-agent:客户端类型,就是你请求用的是什么浏览器。
host:就是服务端的地址。
cookie:身份认证。
3、请求体
请求体就是发送数据时,把数据放在请求体里面。
get请求是没有请求体的,post请求才有请求体。比如登陆的账号密码就是放在请求体里面的。
三、response(http响应)
一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
响应包含响应头和响应体。
响应头里面包含了响应的状态码,返回数据的类型,类型的长度,服务器信息,Cookie信息等等。
响应体里面就是返回的具体数据。
1、响应状态码:
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
301- 永久重定向
302- 临时重定向
304- 用到缓存,请求服务端资源未改变,用本地未过期缓存
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
2、常见状态码:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常