HTTP请求
组成
请求由三部分组成
请求行
- 类型 uri 协议名
- 请求头
- 请求体
telnet
telnet ip地址 端口号之后可以直接使用上面【http请求】组成的格式发送请求
三种请求体类型
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
三种请求体类型总结
客户端发送
编码
- application/x-www-form-urlencoded :url 编码
- application/json:utf-8 编码
- multipart/form-data:每部分编码可以不同
- 表单只支持以 application/x-www-form-urlencoded 和 multipart/form-data 格式发送数据
- 文件上传需要用 multipart/form-data 格式
- js 代码可以支持任意格式发送数据
服务端接收
- 对 application/x-www-form-urlencoded 和 multipart/form-data 格式的数据,Spring 接收方式是统一的,只需要用 java bean 的属性名对应请求参数名即可
- 对于 applicaiton/json 格式的数据,Spring 接收需要使用 @RequestBody 注解 + java bean 的方式
session原理
为什么用session
Http请求是无状态的,所以对服务器来讲,服务区分这个请求是来自于哪里,无法识别来自同一来源的请求。
什么是session
标识请求的一种方式。
如何使用session
客户端发送http请求之后,服务器会根据http请求上带着的数据生成一个session对象,存储在服务器端,并将sessionid返还给客户端。这样以后每次客户端带着sessionid访问服务器请求的时候,服务器就知道是从哪里来的请求了。
session有什么问题
session是不支持跨域的,也就是说前端和后端必须在同一台服务器上。这样对于一些分布式场景就无法适用了。
原理图
JWT原理
为什么用JWT
解决分布式下session的场景
什么是JWT
JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。
JSON Web Token由三部分组成,它们之间用圆点(.)连接。即:Header+Payload+Singnature。
如何使用JWT
客户端发送http请求之后,服务器生成token,并返回给客户端,这样每次客户端访问资源的时候都带着这个token,服务器再验证一下,如果通过验证,则给于token。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。