当前位置: 首页 > news >正文

Http 响应协议

        HTTP的响应协议

        响应数据格式

        响应行 响应数据的第一行,包括协议、状态码、描述

        响应头 从响应数据格式的第二行开始,也是以key:value的格式

        响应体 和响应头之间有一个空行,是响应数据格式的最后一部分,用于存放响应的数据

        常见响应状态码:

         1XX:表示响应中,是临时的状态码;表示请求已经接收了,告诉客户端应该继续请求或客户端已经完成则可以忽略(常见于WebSocket技术)

         2XX:成功,该请求已经被成功接收,并且也成功处理

         3XX:重定向,重定向到其他地方了,让客户端再次发起一次请求可以完成整个处理

         比如:请求百度:http://www.baidu.com,百度的请求路径是https://www.baidu.com,但是请求也会成功 是因为第一次请求http的时候,百度的服务器能够接收,会响应一个307状态码,告诉浏览器需要重定向访问正确的 百度,并且会在响应头中添加Location:https://www.baidu.com这个响应头,浏览器就会根据这个响应的location 再次发起请求,这次就会成功请求到正确的百度 在重定向中,一共有两次请求响应的过程,第一次是请求到了错误的路径,但是服务器成功接收,返回3XX的状态码和 在请求头中添加Location:(正确的路径);浏览器看到状态码是3XX,就会根据Location的路径发起第二次请求, 但是都是由浏览器在极短的时间内完成的,用户无法察觉          4XX:客户端的错误,处理发生错误,责任在于客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等

         5XX:服务器错误,处理发生错误,责任在于服务端。如:客户端程序抛出了异常(500就是服务器端抛异常了)

        通过tomcat服务器封装的HttpServletResponse对象操作响应数据

/*** 和request请求一样,Tomcat服务器也将响应的数据封装成了HttpServletResponse对象,* 可以操作HttpServletResponse对象便捷的封装响应的数据* @param response*/@RequestMapping("/response")public void response(HttpServletResponse response) throws Exception {// 设置响应状态码response.setStatus(302);// 设置响应头response.setHeader("Location", "https://www.baidu.com");// 设置响应体// 响应体需要使用流写入,HttpServletResponse中自带IO流,打开后就可以直接写response.getWriter().write("<h1>Hello Response<h1>");}

        Spring框架提供的ResponseEntity对象更加便捷的操作响应数据

        

/*** 除了Tomcat服务器的封装,Spring提供了操作响应数据的对象ResponseEntity,可以通过ResponseEntity对象* 更加便捷的操作响应数据** @return*/@RequestMapping("/response2")public ResponseEntity<String> response() {return ResponseEntity.status(307).header("Location", "https://www.baidu.com").body("<h1>Spring Response<h1>");}// 但是需要注意的是:响应状态码(status)和响应头(header)没有特殊要求的话,通常不手动设置// 服务器会根据请求处理的逻辑自动设置响应状态码和响应头

 

http://www.lryc.cn/news/492160.html

相关文章:

  • TCP/IP 协议:网络世界的基石(2/10)
  • Lua--1.基础知识
  • 【GPT】力量训练的底层原理?
  • 各种排序算法
  • 源码解读笔记:协程的 ViewModel.viewModelScope和LifecycleOwner.lifecycleScope
  • 11.27周三F34-Day8打卡
  • XG(S)-PON原理
  • C语言实例之9斐波那契数列实现
  • YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
  • 数据结构--Map和Set
  • 计算机操作系统——进程控制(Linux)
  • 【前端】ES6基础
  • 【排序算法 python实现】
  • Java图书管理系统(简易保姆级)
  • 嵌入式硬件设计:从概念到实现的全流程
  • 第 4 章 Java 并发包中原子操作类原理剖析
  • 从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中
  • 政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例
  • CentOS 7 安装部署 KVM
  • ArcGIS 10.2软件安装包下载及安装教程!
  • 一个专为云原生环境设计的高性能分布式文件系统
  • 基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
  • 3174、清除数字
  • C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
  • ADS学习笔记 6. 射频发射机设计
  • 上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量
  • QT QRadioButton控件 全面详解
  • 51单片机从入门到精通:理论与实践指南(一)
  • 零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu
  • C#中面试的常见问题007