网络协议(十四)-应用层(HTTP)

2021-01-08  本文已影响0人  小冰山口
HTTP
版本
报文格式
image.png image.png image.png
ABNF-核心规则
image.png
报文格式-request-line, status-line

request-line = method SP request-target SP HTTP-version CRLF
HTTP-version = HTTP-name "/" DIGIT"."DIGIT"
HTTP-name = %48.54.54.50;HTTP

GET /hello/ HTTP/1.1

status-line = HTTP-version SP status-code SP reason-phrase CRLF
status-code = 3DIGIT
reason-phrase = *(HTAB / SP / VCHAR / obs-text)

HTTP/1.1 200
HTTP/1.1 200 OK

报文格式 - header-filed, message-body

header-filed = filed-name ":" OWS field-value OWS
field-name = token
field-value = *(field-content / obs-fold)
OWS = *(SP / HTAB)

message-body = *OCTET

URL的编码
请求方法
头部字段(Header Field)

-- 响应头字段(ResponseHeader Fields)
✅有关响应的补充信息, 比如服务器本身(名称和版本等)的消息头

-- 实体头字段(Entity Header Fields)
✅有关实体主体的更多信息, 比如主体长度(Content-Length)MIME类型

-- 请求头字段(General Header Fields)
✅同时适用于请求和响应消息, 但与消息主体无关的消息头

请求头字段
image.png image.png image.png
响应头字段
image.png image.png image.png
状态码(Status Code)
form提交-常用属性

-- multipart/form-data
✅文件上传时必须使用这种编码方式

form提交-multipart/form-data
同源策略
跨域资源共享

-- 服务器
✅需要返回相应的响应头(比如Access-Control-Allow-Origin)
✅告知浏览器这是一个允许跨域访问的请求

后端在返回数据前就应该先判断origin和允许访问的是否一致, 否则就算浏览器报错跨域问题, 前端一样可以拿到数据, 后端的数据就存在不安全性

会话跟踪
Cookie & Session
Cookie的有效期
Cookie的作用域
服务器设置Cookie
getSession内部的原理

-- 如果有
✔️返回idJSESSIONIDSession对象

JSESSIONID
Cookie cookie = new Cookie("JSESSIONID", request.getSession().getId());
cookie.setMaxAge(3600);
response.addCookie(cookie);
Session的有效期
<session-config>
    <session-timeout>30</session-timeout>
 </session-config>
总结
上一篇下一篇

猜你喜欢

热点阅读