HTTP协议

137 阅读2分钟
介绍

HTTP:Hyper Text Transfer Protocol超文本传输协议。HTTP最大的作用就是确定了请求和响应数据的格式。浏览器发送给服务器的数据:请求报文;服务器返回给浏览器的数据:响应报文。

请求报文

包含三个部分:
1 请求行
请求行中包含三个信息 请求方式/访问地址/HTTP协议的版本
2 请求消息头 Requset Headers
作用:通过具体的参数对本次请求进行详细的说明。
格式:键值对,键和值用冒号隔开。

image.png
3 请求主体
三种情况:
get方式:没有请求体,但是有一个queryString post方式:有请求体,form data json格式:有请求体,request payload

响应报文

包含三个部分:
1 响应行
包含三个信息:
协议
响应状态码 200 正常响应 404找不到资源 405请求方式不支持 500服务器内部错误
响应状态

2 响应消息头
包含了服务器的信息,服务器发送给浏览器的信息(内容的媒体类型,编码,内容长度等)
3响应体
响应的实际内容(比如html标签等)

会话

http是无状态的:这两次请求服务器无法区分这两次请求是不是同一个客户端发过来的
无状态带俩的现实问题是:比如第一次请求是添加商品到购物车,第二次请求时结账;如果这两次请求服务器无法区分,那么就会导致混乱。
通过会话跟踪技术解决这个问题:
客户端第一次发送请求,服务器会分配一个Session ID给客户端。之后客户端访问会携带sessionId,这样服务器可以通过对比sessionID,就能区分客户端。

  • Session api request.getSession(); 获取不到会话,则创建新的一个会话
    request.getSession(true);效果同上
    request.getSession(false);获取当前会话,没有则返回null,不会创建新的
    session.getId();获取sessionId
    session.isNew();判断当前session是否是新的
    session.getMaxInactiveInterval()session的非激活间隔时长,默认1800秒 不操作时长超过半个小时就过期
    session.setMaxInactiveInterval()设置非激活间隔时间。

  • Session 作用域(在java的服务器端有一块内存来专门存储,但是只有对应sessionID的浏览器才能获取)