浅析http协议精品PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅析HTTP协议
http协议在网络模型的地位
HTTP
HTTP UDP,TCP
http事务的过程
http请求的格式
• Host
请求头参数举例
• Accept
text/html text/html,application/xml;q=0.9,*/*;q=0.8
http响应的格式
http响应码
• SetCookie.java
• httpdemo.cn/setcookie
• GET /setcookie HTTP/1.1 • Accept: */* • Host: httpdemo.cn
使用cookie记录登录状态
提交用户名密码
服务端验证
验证通过
往客户端写cookie:uid,来源,加密的uid
学习总结
经常不断地学习,你就什么都知道。你知道得越多,你就越有力量 Study Constantly, And You Will Know Everything. The More
You Know, The More Powerful You Will Be
结束语
当你尽了自己的最大努力时,失败也是伟大的, 所以不要放弃,坚持就是正确的。
客户端再次发起需要登录才能访问的请求
取出随机字符串,如果内存或数据库中存在 则表示合法,其他信息可从value中取
上述方案的问题
• http明文传输,包括cookie在内容易被监听 • 解决方法:使用https
https访问过程
客户端
1. 建立tcp连接
服务端
2. 通过ssl握手,建立秘密通道
3. 发送加密的http请求 4. 发送加密的http响应
5. 关闭连接
案例
分界线
POST方法
• 空body:PostWithoutData.java
• 非空body:须指定Content-Type • Content-Type分2种:application/x-
urlencoded和multipart/form-data
application/x-
When You Do Your Best, Failure Is Great, So Don'T Give Up, Stick To The End 演讲人:XXXXXX 时 间:XX年XX月XX日
如何断包?
• Content-Length: 4190
HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nAccept-Ranges: bytes\r\nContent-Type: text/plain\r\nContent-Length: 16\r\n\r\nthis is content.
客户端再次发起需要登录才能访问的请求
用uid和加密uid进行验证匹配,通过则合法
上述方案的问题
• 传输量大
• 加密算法被破解或泄露,比如程序员离 职。。。
记录登录状态方案改进
提交用户名密码
服务端验证
验证通过
1.往客户端写cookie:足够长的随机字符串 2. 使用上述字符串作key,其他信息作value保存在 数据库或内存中,并超时自动删除
编码范围 100-199 200-299 300-399 400-499 500-599
类型 信息性响应状态码 成功响应状态码 重定向响应状态码 客户端错误 服务器端错误
使用telnet发送http请求
Example:
GET /base.txt HTTP/1.1 Host: httpdemo.cn
请求部分内容
• 请求头: Range: bytes=3-8 • 响应码:206 Partial Content
使用java发送http请求
SimpleRequest.java
Keep-alive工作原理
Connection
• Close • keep-alive
Βιβλιοθήκη Baidu
Socket关闭
• 谁关闭? • 什么时候关闭?
• 适用场景:传输字符串时使用 • 通过charset指定内容的编码类型,如:
Content-Type:application/x-; charset=UTF-8 • 必须指定编码后的字节长度,使用Content-
Length,十进制字符串
multipart/form-data
• 适用场景:当需要传输二进制文件到服务 端时
• 在Content-Type指定boundary,如:
Content-Type:multipart/form-data; boundary=ZnGpDtePMx0KrHh_H0X99Yef9r8JZsRJSXC
客户端浏览器
案例
上传文件
业务服务器
调用分布式文件系统客户端上传(http方式) 分布式文件系统服务器
• Transfer-Encoding: chunked: ChunkedResponse.java
分界线
• name • Value • Comment • Path • Domain • Secure • Httponly • Maxage • Version
Cookie的属性
Java api操作cookie
http协议在网络模型的地位
HTTP
HTTP UDP,TCP
http事务的过程
http请求的格式
• Host
请求头参数举例
• Accept
text/html text/html,application/xml;q=0.9,*/*;q=0.8
http响应的格式
http响应码
• SetCookie.java
• httpdemo.cn/setcookie
• GET /setcookie HTTP/1.1 • Accept: */* • Host: httpdemo.cn
使用cookie记录登录状态
提交用户名密码
服务端验证
验证通过
往客户端写cookie:uid,来源,加密的uid
学习总结
经常不断地学习,你就什么都知道。你知道得越多,你就越有力量 Study Constantly, And You Will Know Everything. The More
You Know, The More Powerful You Will Be
结束语
当你尽了自己的最大努力时,失败也是伟大的, 所以不要放弃,坚持就是正确的。
客户端再次发起需要登录才能访问的请求
取出随机字符串,如果内存或数据库中存在 则表示合法,其他信息可从value中取
上述方案的问题
• http明文传输,包括cookie在内容易被监听 • 解决方法:使用https
https访问过程
客户端
1. 建立tcp连接
服务端
2. 通过ssl握手,建立秘密通道
3. 发送加密的http请求 4. 发送加密的http响应
5. 关闭连接
案例
分界线
POST方法
• 空body:PostWithoutData.java
• 非空body:须指定Content-Type • Content-Type分2种:application/x-
urlencoded和multipart/form-data
application/x-
When You Do Your Best, Failure Is Great, So Don'T Give Up, Stick To The End 演讲人:XXXXXX 时 间:XX年XX月XX日
如何断包?
• Content-Length: 4190
HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nAccept-Ranges: bytes\r\nContent-Type: text/plain\r\nContent-Length: 16\r\n\r\nthis is content.
客户端再次发起需要登录才能访问的请求
用uid和加密uid进行验证匹配,通过则合法
上述方案的问题
• 传输量大
• 加密算法被破解或泄露,比如程序员离 职。。。
记录登录状态方案改进
提交用户名密码
服务端验证
验证通过
1.往客户端写cookie:足够长的随机字符串 2. 使用上述字符串作key,其他信息作value保存在 数据库或内存中,并超时自动删除
编码范围 100-199 200-299 300-399 400-499 500-599
类型 信息性响应状态码 成功响应状态码 重定向响应状态码 客户端错误 服务器端错误
使用telnet发送http请求
Example:
GET /base.txt HTTP/1.1 Host: httpdemo.cn
请求部分内容
• 请求头: Range: bytes=3-8 • 响应码:206 Partial Content
使用java发送http请求
SimpleRequest.java
Keep-alive工作原理
Connection
• Close • keep-alive
Βιβλιοθήκη Baidu
Socket关闭
• 谁关闭? • 什么时候关闭?
• 适用场景:传输字符串时使用 • 通过charset指定内容的编码类型,如:
Content-Type:application/x-; charset=UTF-8 • 必须指定编码后的字节长度,使用Content-
Length,十进制字符串
multipart/form-data
• 适用场景:当需要传输二进制文件到服务 端时
• 在Content-Type指定boundary,如:
Content-Type:multipart/form-data; boundary=ZnGpDtePMx0KrHh_H0X99Yef9r8JZsRJSXC
客户端浏览器
案例
上传文件
业务服务器
调用分布式文件系统客户端上传(http方式) 分布式文件系统服务器
• Transfer-Encoding: chunked: ChunkedResponse.java
分界线
• name • Value • Comment • Path • Domain • Secure • Httponly • Maxage • Version
Cookie的属性
Java api操作cookie