HTTP协议

协议

  • 约束双方规范的一个准则(标准)

HTTP协议

  • HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议
  • 所有的WWW文件都必须遵守这个标准
  • 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方式(方法)
  • 约束请求与响应的规则

HTTP组成部分

  • 请求
  • 响应
  • 请求与响应都是成对存在的

请求的发送方式

  1. 通过浏览器的地址栏
  2. 通过HTML当中的form表单
  3. 通过a链接的href
  4. src属性(src是把响应的结果展示出来,例如请求一张网络图片)

HTTP请求

  • 请求行
    • 请求方式:POST、GET
    • 请求的资源:/bntang/login.html?username=bntang&pwd=1234
    • 协议版本:HTTP/1.0,发送请求,创建一次连接,获得一个Web资源,连接断开。HTTP/1.1,发送请求,创建一次连接,获得多个Web资源,保持连接
  • 请求头
    • 请求头是客户端发送给服务器端的一些信息
    • 使用键值对表示,key:value
    • 常见请求头
      • Referer:浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链
      • If-Modified-Since:浏览器通知服务器,本地缓存的最后变更时间
      • Cookie:用于存放浏览器缓存的cookie信息
      • User-Agent:浏览器通知服务器,客户端浏览器(用的什么浏览器)与操作系统相关信息(用的什么操作系统)
      • Connection:保持连接状态。Keep-Alive 连接中,close 已关闭
      • Host:请求的服务器主机名
      • Content-Length:请求体的长度
      • Content-Type:如果是POST请求,会有这个头,默认值为 application/x-www-form-urlencoded,表示请求体内容使用URL编码
      • Accept:浏览器可支持MIME类型。文件类型的一种描述方式
        • text/html,html文件
        • text/css,css文件
        • text/javascript,js文件
        • image/*,所有图片文件
      • Accept-Encoding:浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩
      • Accept-Language:浏览器通知服务器,浏览器支持的语言
    • 自动的把客户端的信息发送给服务器
  • 请求体
    • 当请求方式是POST时,请求体会有请求的参数
    • 如果请求方式为GET,那么请求参数不会出现在请求体中,会拼接在URL地址后面

HTTP响应

  • 响应行
    • HTTP协议
    • 状态码
      • 200:请求成功
      • 302:请求重定向
      • 304:请求的资源没有改变,访问本地缓存
      • 404:请求的资源没找到不存在。通常是用户路径编写错误,也可能是服务器资源已删除
      • 500:服务器内部错误。通常是程序抛异常,代码问题
    • 其它状态码
      • 成功
        • 200:OK
        • 201:已创建
        • 202:接收
        • 203:非认证信息
        • 204:无内容
        • 205:重置内容
        • 206:部分内容
      • 重定向
        • 300:多路选择
        • 301:永久转移
        • 302:暂时转移
        • 303:参见其它
        • 304:未修改(Not Modified)
        • 305:使用代理
      • 客户方错误
        • 400:错误请求(Bad Request)
        • 401:未认证
        • 402:需要付费
        • 403:禁止(Forbidden)
        • 404:未找到(Not Found)
        • 405:方法不允许
        • 406:不接受
        • 407:需要代理认证
        • 408:请求超时
        • 409:冲突
        • 410:失败
        • 411:需要长度
        • 412:条件失败
        • 413:请求实体太大
        • 414:请求URI太长
        • 415:不支持媒体类型
      • 服务器错误
        • 500:服务器内部错误
        • 501:未实现(Not Implemented)
        • 502:网关失败
        • 504:网关超时
  • 响应头
    • 服务器端将信息以键值对的形式返回给客户端
    • 常见响应头
      • Location:指定响应的路径,需要与状态码302配合使用,完成跳转
      • Content-Type:响应正文的类型(MIME类型)
      • Content-Disposition:通知浏览器以下载方式解析正文
      • Set-Cookie:服务器向浏览器写入cookie
      • Content-Encoding:服务器使用的压缩格式
      • Content-length:响应正文的长度
      • Refresh:定时刷新
      • Server:服务器名称,默认值:Apache-Coyote/1.1。可以通过conf/server.xml配置进行修改
      • Last-Modified:服务器通知浏览器,文件的最后修改时间
    • 自动的把服务器端的信息传给客户端
  • 响应体
    • 响应体是服务器回写给客户端的页面正文
    • 浏览器将正文加载到内存
    • 然后解析渲染显示正文内容

请求方式

8种请求类型

  1. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送*的请求来测试服务器的功能性
  2. HEAD:请求指定的页面信息,并返回头部信息
  3. GET:请求指定的页面信息,并返回实体主体
  4. POST:向指定资源提交数据进行处理请求
  5. PUT:向指定资源位置上传其最新内容
  6. DELETE:请求服务器删除Request-URL所标识的资源
  7. TRACE:回显服务器收到的请求,主要用于测试或诊断
  8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

常用两种请求

🐤GET

  • GET请求向页面请求发送参数
  • 地址和参数信息中间用?字符分隔,例如:http://www.bntang.com/hello?key1=value1&key2=value2
  • 查询字符串会显示在地址栏的URL中,不安全,请不要使用GET请求提交敏感数据
  • GET请求有大小限制:请求字符串中最多只能有1024个字符
  • GET请求能够被缓存
  • GET请求会保存在浏览器的浏览记录中
  • 可以添加书签
  • 编码类型为 application/x-www-form-urlencoded
  • 只允许ASCII字符类型,不能用二进制流
  • 点击刷新时,不会有反应
  • GET请求主要用于获取数据

🐸POST

  • POST请求向页面请求发送参数
  • 使用POST请求时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器
  • 编码类型为:application/x-www-form-urlencoded or multipart/form-data,请求二进制数据使用 multipart 编码
  • 没有历史记录
  • 参数类型没有限制,可以是字符串也可以是二进制流
  • 数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以POST请求比GET请求安全,但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输
  • 查询字符串不会显示在地址栏中
  • POST传输的数据量大,可以达到2M,而GET请求由于受到URL长度限制,只能传递大约1024字节
  • POST就是为了将数据传送到服务器,GET就是为了从服务器取得数据
posted @ 2020-08-25 13:40  BNTang  阅读(178)  评论(0编辑  收藏  举报