一、基本概念
Hyper Text Transfer Protocol 超文本传输协议,定义了客户端和服务器端通信时,发送数据的格式。特点:基于TCP/IP的高级协议,默认端口号:80,基于请求/响应模型的(一次请求对应一次响应),无状态的(每次请求之间相互独立,不能交互数据)。历史版本: 1.0版本(每一次请求响应都会建立新的连接), 1.1版本(复用连接)。
** 常用状态码:https://www.runoob.com/http/http-status-codes.html
二、请求消息数据格式
在浏览器中通过F12键打开开发者模式,然后选择网络选项卡可以查看请求信息
1、请求行
** 格式: POST /login.html HTTP/1.1 (请求方式/请求url 请求协议/版本)。
** 请求方式:在http中一共有7种请求协议,常用的有两种请求协议,分别是get和post。GET(特点:请求参数在请求行中,在URl后面,并且请求参数的长度有限制,不太安全),POST(特点:请求参数在请求体中,请求的url长度并没有限制,相对来说比较安全)
2、请求头
是客户端浏览器告诉服务器的一些信息,格式(请求头名称:请求头值),常见的请求头有User-Agent,Referer。 User-Agent:浏览器告诉服务器,浏览器使用的版本信息,可以在服务器端获取该头的信息,解决浏览器的兼容性问题。Referer:告诉服务器,我(当前请求)从哪里来,获取请求路径,可以防止盗链并可以进行一些统计工作。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//兼容性问题
String header = request.getHeader("user-agent");
if(header.contains("chrome")){
System.out.println("谷歌浏览器");
}else if(header.contains("Firefox")){
System.out.println("火狐浏览器");
}
System.out.println("..............................");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//防止盗链
String referer = request.getHeader("referer"