【10】HTTP协议

HTTP协议

规范服务器和浏览器之间数据传输的格式

一、查看浏览器与服务器间的通讯过程

  • IE使用httpwatch
  • chrome使用审查元素(network)
  • 使用telnet(telnet host port)

二、HTTP请求

1.请求行

  • 请求方式
    • GET:提交数据在请求URI,大小不能超过1k,会产生缓存文件
    • POST:提交数据在实体内容,大小无限制,不会产生缓存文件
  • 请求资源
  • 协议名和版本
    • HTTP/1.0: 一次只能请求和响应一个资源
    • HTTP/1.1: 在一定时间内保持连接

2.请求头

  • User-Agent: 用户浏览器的类型和版本
  • Referer: 获取发出请求的页面,防盗链(null)
  • If-Modified-Since: 缓存时间
    • 静态页面默认使用缓存,动态页面默认不使用缓存
    • 服务器文件最后修改时间lastModified与浏览器文件最后修改时间ifModifiedSince作比较
    • 重写getLastModified方法实现动态页面缓存
  • 还有其他
  • 空行

3.请求体

只当POST请求时有内容,是键值对形式

三、HTTP响应

1.状态行

  • 协议名和版本
  • 状态码及英文描述
    • 200 OK 请求成功,整个处理过程完成
    • 302 Move Temprorily 请求重定向
    • 304 Not Modified 使用缓存
    • 404 Not Found 请求的资源不存在
    • 500 Internal Server Error 服务器代码异常

2.响应头

  • Locations 跳转到页面(sendRedirect)
  • Content-Encoding 通知浏览器先解压gzip压缩包再展示页面
  • Content-Type
    • 乱码问题:编码和解码的码表不一致,具体见《编码、解码和乱码》
    • Response默认使用的ISO8859-1拉丁码表
    • setCharacterEncoding(“utf-8”);修改Response编码使用的码表
    • setContentType(“text/html;charset=utf-8”)修改Response编码使用的码表并通知浏览器解码使用的码表
  • Refresh
    • 指定一个秒数定时刷新页面setHeader(“refresh”,”3”)
    • 定时跳转setHeader(“refresh”,”3;url=/index.jsp”);
  • Content-Disposition 以附件形式处理文件
    • 中文不能直接用于网络传输,必须先URL编码
    • 文件下载时候文件名的URL编码必须使用UTF-8(浏览器厂商制定)
    • setHeader(“content-disposition”,”attachment;filename=”+URLEncoder.encode(file.getName(),”utf-8”));
  • 不产生缓存文件(特别是敏感信息)
    • Cache-Control:no-cache
    • Expires:-1
    • Pragma:no-cache
    • 失效?因为现代浏览器都不认这个了(-。-;)
  • 空行

3.响应体

服务器向浏览器回传的数据,一般是HTML页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值