关于常⻅HTTP响应码

官⽅⽂档(英⽂版): http://doc.canglaoshi.org/rfc/rfc1945.txt
官⽅⽂档(中⽂版): http://doc.canglaoshi.org/rfc-cn/RFC1945.txt
常⻅ HTTP 响应码通俗描述(以下涉及的问题解决⽅案,在未学到到对应的框架技术之前可暂时跳过):
200 :成功响应,需要注意,这仅仅表示服务器端成功的进⾏了响应这项操作,并不表示业务的成功,例如尝
试登录时,如果⽤户名或密码错误导致登录失败,只要服务器端成功的响应了,响应码也是 200
302 :重定向,服务器端处理请求后,会响应此响应码和另⼀个⽬标路径,通常,浏览器收到此响应码后会⾃
动请求新的⽬标路径
400 :请求参数错误,例如服务器端对某个请求参数设置了 不允许为 null” 的约定,⽽客户端却未提交此参
数,或某请求参数必须是数值类型的,客户端提交的却是⼀个⽆法转换为数值类型的参数值
出现此问题时,你应该通过断点或打桩等⽅式观察提交的请求参数,并查看服务器端对请求参数的约束
Spring MVC 框架中, @RequestParam 默认具有 不允许为 null” 的约定
Spring MVC 框架中,会尝试⾃动将请求参数转换为服务器端声明的参数类型
Spring MVC 框架中,使⽤了 Hibernate Validation 验证机制后,也会对请求参数产⽣约束,具体
约束需参考所使⽤的注解
基于以上框架的进阶框架具有同样效果,例如添加了 spring-boot-starter-web 依赖项的 Spring
Boot ⼯程是使⽤ Spring MVC 接收请求参数的,添加了 spring-boot-starter-validation 依赖
项的 Spring Boot ⼯程则是使⽤ Hibernate Validation 实现的请求参数验证
401 :未授权,通常出现在未登录,却尝试请求必须登录才允许访问的资源时
403 :禁⽌访问,通常出现在已经登录,却不具备访问权限时,例如普通⽤户尝试请求管理员权限的资源时
出现此问题时,如果你使⽤了 Spring Security 框架,你应该检查 Spring Security 的配置类中的相关配
置,例如⽩名单路径,并检查你是否开启了授权访问,如果已开启,你还应该通过断⾔或打桩等⽅式观
察当前登录的⽤户的权限清单,并检查在请求资源上设置的权限规则
404 :请求的资源不存在,通常是客户端提交请求的 URL 错误
出现此问题时,你应该检查客户端提交请求的 URL 与服务器端设置的接收请求参数的 URL 是否⼀致
在确保客户端提交请求的 URL 是你预期的时,关于服务器端,你应该:
如果你请求的是服务器端的某个静态资源,你应该检查此资源是否存在,在 Spring Boot ⼯程中,
默认的静态资源⽂件夹是 src/main/resources/static ,并且,需要注意,如果你显式的配置了
静态资源⽂件夹,将会覆盖此默认项
如果你的服务器端是通过 Spring MVC 框架开发的,你应该检查:
控制器是否已经正常启⽤,你可以在控制器类中显式的添加⽆参数构造⽅法,并在其中输出任
何内容,当启动项⽬时,你应该可以在控制台看到输出语句中的内容,如果看不到,则表示控
制器没有被创建,则需要检查组件扫描配置的包、控制器类是否添加了 @Controller
@RestController 注解,如果你使⽤的是 Spring Boot ⼯程,默认组件扫描的包是创建⼯
程时指定的 Group Id Artifact Id 组件的包名
请求路径是由控制器类上的 @RequestMapping 注解(如果存在的话)和处理请求的⽅法上的
source d:\db.sql @RequestMapping 或以此为元注解的其它注解(例如 @GetMapping 等)组合得到的,你应
该检查这 2 处的注解
405 :请求⽅式错误,例如服务器端要求使⽤ POST ⽅式提交请求,⽽客户端却使⽤ GET ⽅式提交请求
出现此问题时,你应该检查客户端的请求⽅式,如果是直接在浏览器的地址栏中输⼊ URL 提交的请求,
GET ⽅式的,如果是通过 HTML 表单或其它异步提交⽅式,除⾮显式的使⽤ POST ⽅式,否则都是 GET
⽅式的,另外,在服务器端,你需要检查如何配置的请求 URL ,例如使⽤ @PostMapping 时,则限制了
客户端的请求⽅式必须是 POST
406 :不可接收的,通常出现在基于 Spring MVC 的⼯程中,将服务器端的响应⽅式设定为响应 JSON 格式的正
⽂时,如果属于此情景,你应该检查:
是否正确的添加了 jackson-databind 依赖项
是否在 Spring MVC 配置类上添加了 @EnableWebMvc 注解
500 :服务器内部错误,通常是因为服务器端出现了异常且始终未显式的捕获
出现此问题时,你应该检查服务器端控制台的异常信息,如果⽆信息,你应该检查项⽬中是否使⽤了
Spring MVC 统⼀处理异常的机制,并且在处理异常时未添加 e.printStackTrace() 等⽅式将异常信息
输出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值