http必知必会
来源:互联网 发布:java基础教程下载 编辑:程序博客网 时间:2024/06/05 01:05
1、基于TCP传输协议
OSI七层网络体系结构 : 物理层、数据链路层、网络层、传输层、表示层、会话层、应用层
TCP 是 传输层 协议
HTTP 是 应用层协议 基于TCP 协议
TCP特征 : 三层握手
1)、A给B 说话: 能听到我说话吗?
2)、B回应:我能听到,能听到我说话吗?
3)、A回应:我也能听到
确保通信畅通的 ---- 数据传输不允许丢包
A 给 B 发数据,如果B 没有回应,A 选择重新发送 ----- 超时
2、默认端口80 则 省略端口
3、基于请求-响应模式的协议
先请求,再出现响应 ---- 请求和响应 一一对应
浏览器查看http协议数据包方式:httpwatch和浏览器自带的开发者工具(例如ie的f12)
第一部分 HTTP 请求
请求完整格式 包括三个部分 : 请求行、头信息、请求体1、请求行:请求中第一行信息 ---- 包括三个部分 请求方式、资源路径、HTTP协议版本
例如: GET / HTTP/1.1
HTTP请求方式有几种 : POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用两种: GET 、 POST
客户端网页哪些是GET方式请求? 哪些是 POST 请求
GET方式 :1、用户直接在浏览器上手动输入url地址 2、<a href="url"></a> 3、<form method="get" > *form表单默认提交方式就是get
POST方式: 1、<form method="post" >
GET提交方式和POST提交方式区别 ?
Get url地址后携带数据有大小限制 1K ,提交数据在url上显示
* http://localhost/day04/url?username=zhangsan 格式 url?name=value&name=value&name=value...
以?分隔url和参数,参数采用键值对格式,多个参数使用& 符合分隔
POST 数据在请求体中,不在url上显示 ,没有数据大小限制
* username=zhangsan 请求体和头信息直接存在一个空行
2、头信息: 很多key -value
Accept: text/html,image/* ----- 客户端可以接收文件类型 text/html HTML文件 image/* 任意格式图片
Accept-Charset: ISO-8859-1 ----- 客户端可以识别编码字符集
Accept-Encoding: gzip ----- 客户端可以识别压缩数据格式 gzip是一种压缩格式
Accept-Language:zh-cn ----- 客户端浏览器语言
Host: www.itcast.com:80 ----- 访问服务器地址
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ----- 该请求的资源在客户端保存最后访问时间 (缓存有关)
Referer: http://www.itcast.com/index.jsp ---- 上一次请求访问页面地址
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---- 客户端浏览器类型版本
Connection: close/Keep-Alive ---- 该次请求连接后,连接是保持还是关闭 1.0 关闭 1.1 保持
Date: Tue, 11 Jul 2000 18:23:51 GMT ---- 请求时间
******* Accept-Encoding 、If-Modified-Since 、Referer
Referer 防止客户盗链数据 :通过google搜索页面直接下载 其它网站数据 (盗链)
模拟浏览器访问服务器 获得 refererServlet当中信息
1) URL 连接 ---- HTTP协议
客户端:connection.addRequestProperty("referer", "http://localhost/index.jsp");
服务器端:request.getHeader("referer");
3、请求体: 存放客户端提交post 请求 数据
key=value&key=value&key=value ....
例如 : username=sss
第二部分 HTTP响应
响应数据 分为三个部分 :状态行、头信息、响应体
1、状态行 分为三个部分: HTTP协议版本、状态码、描述信息
例如: HTTP/1.1 200 OK
100~199 Informational 请求信息不足 ,还需要其他信息才能处理
200~299 Success 请求处理成功
300~399 Redirection 服务器已经处理完毕,客户端还需要进一步动作
400~499 Client Error 客户端错误
500~599 Server Error 服务器端错误
200 请求处理成功 302 客户端进行重定向 304 客户端访问资源没有被修改后,客户端访问本地缓存 404 访问资源不存在 500 服务器内部出错
借钱
200 A 找 B 借钱 B 将钱 借个A
302 A 找 B 借钱 B 通知 A 找C 借钱 --- A 找C 借钱
304 A 找 B 借钱 , B对A 说 借过了 --- A 使用 之前从B 借的钱
404 没钱
505 B 不存在了
2、响应头
Location: http://www.it315.org/index.jsp ---- 重定向地址 结合 302 一起使用
* 重定向 两次请求 两次响应
Server:apache tomcat ----- 服务器类型
Content-Encoding: gzip ---- 设置响应数据压缩格式 ---- 请求 Accept-Encoding
* 如果响应数据经过压缩 传输体积更小,性能更好
没有压缩情况下,通过浏览器开发者工具查看,打开http://localhost/docs/为13605字节
如何设置tomcat压缩
* 通过设置 tomcat/conf/server.xml 设置响应数据压缩
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
* 清除浏览器缓存,重启tomcat
重新http://localhost/docs/为4244字节
Content-Length: 80 ----- 响应数据长度
Content-Language: zh-cn ----- 响应数据语言
Content-Type: text/html; charset=GB2312 ----- 响应数据类型
* 数据类型采用Mime协议规定类型 html文件 ---- text/html、 jpg文件---- image/jpeg
* 在 tomcat/conf/web.xml 中查看文件mime类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT ----- 和请求头信息 If-Modified-Since一起使用,控制服务器缓存
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改时间(精确毫秒)
* 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
Refresh: 1;url=http://www.it315.org ----- 网页自动跳转
Content-Disposition: attachment; filename=aaa.zip ----- 文件下载时指定文件附件名称
控制该程序在客户端不缓存
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 对于动态程序,经常修改, 禁止浏览器缓存内容
Connection: close/Keep-Alive ---- 响应后连接是否关闭
Date: Tue, 11 Jul 2000 18:23:51 GMT --- 响应时间
重点:302结合Location进行重定向 、在tomcat配置gzip压缩 、tomcat缓存策略 、禁止浏览器缓存
3、响应体
通常HTML 文件内容 ---- 如果设置响应体进行gzip压缩,看到gzip压缩内容
- http必知必会
- HTTP必知必会
- HTTP必知必会
- HTTP必知必会
- HTTP必知必会
- Android HTTP必知必会
- http请求的必知必会
- http
- http
- HTTP
- HTTP
- HTTP
- http
- HTTP
- HTTP
- HTTP
- http
- http
- Android之ListView属性描述
- ULBP(uniform LBP) c++代码
- 单例模式中静态变量初始化与不初始化有什么区别?
- 文章标题
- 项目经理面试指南
- http必知必会
- Dairy of CDQZ 2
- 黑马程序员——C基础---二维数组
- 实现 用批处理获取cpu核心数 替换制定字符串
- 线程同步函数
- HDU - 3516 Tree Construction(四边形优化)
- js基础
- POJ 1042 Gone Fishing
- 整理下前一阵学的排序算法(1)