一、HTTP协议:超文本传输协议,一种网络传输协议。基于TCP/IP协议来传输数据。
二、HTTP协议工作于 客户端-服务端 架构之上。
1. 一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端)
问:浏览器能发送HTTP协议,HTTP协议一定要浏览器来发送吗?
答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以发。cmd-telnet
2.“服务器”也是一个应用程序。通常为WEB服务。Apache,Nginx,IIS
3.当你打开一个页面时,发生了什么?
1)0:原始状态:客户端和服务器之间没有关系
2)客户端建立连接,发送请求(连接:网络上的虚拟电路)
3)WEB服务器根据收到的请求,沿着连接,向客户端发送响应信息。
4)客户端收到响应信息,二者断开连接
4.HTTP默认端口是80
三、HTTP消息结构
1.客户端请求消息结构:
请求行(请求方法 路径 协议 )
请求头(格式为 key:value )
空行 (头信息和主体数据的区分标志,一定有)
请求数据(可选)
例:
POST /0606/02.php HTTP/1.1
Host:localhost
Content-type:application/x-www-form-urlencode
Content-length:5
Age=3
2.服务器响应消息结构
响应行(协议 状态码 状态文字)
响应头(格式为 key:value)
空行
响应正文(可能没有)
例:
HTTP/1.1 200 OK
Content-type:text/html
Content-Length:5
Hello
一般而言,GET请求是不建议加主体的,可能会导致出现错误。GET最基础最广泛的用法是向服务器请求内容,GET请求的参 数拼接在url后面。对GET请求安全性的预期是低于POST请求的。
四、请求方法有哪些?
GET POST HEAD PUT DELETE TRACE OPTIONS
HEAD:和GET基本一致,只是不返回响应体。
比如我们只是确认一个内容(比如照片)还正常存在,不需要返回照片的内容,这时用HEAD比较合适
TRACE:回显服务器收到的请求,主要用于测试或诊断。
OPTIONS:是返回服务器可用的请求方法。
有些请求是HTTP协议里规定的,但是服务器未必allow。
五、状态码,状态文字
状态码 是用来反映服务器响应情况的。
最常见的如 200 OK,400 NOT FOUND
状态文字是用来描述状态码的,便于人观察
状态码 | 定义 | 说明 |
1XX | 信息 | 接收到请求,继续处理 |
2XX | 成功 | 操作成功收到,理解和接收 |
3XX | 重定向 | 为了完成请求,必须采取进一步措施 |
4XX | 客户端错误 | 请求包含语法错误或无法完成请求 |
5XX | 服务器错误 | 服务器在处理请求的过程中发生了错误 |
200 服务器成功返回网页
301/2 永久/临时重定向
304 Not Modified 未修改
307 重定向中保持原有的请求数据
失败的状态码
404 请求的网页不存在
503 服务器暂时不可用
500 服务器内部错误