HTTP协议

匿名 (未验证) 提交于 2019-12-03 00:19:01

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
  • Content-Encoding
  • 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页面。

文章来源: HTTP协议
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!