JavaScript - 你都知道哪些常用的HTTP状态码,他们的含义是什么

本文详细介绍了HTTP状态码在前后端开发中的重要性,涵盖了200、301、302、304、400、401、403、404、405、413、415和500等常见状态码的含义、应用场景和处理策略,强调了在开发过程中理解和使用状态码对于问题定位的价值。
摘要由CSDN通过智能技术生成

难度级别:中级及以上                                 提问概率:50% 


目录

200

301

302

304

400

401

403

404

405

413

415

500


在前后端联调中,了解HTTP请求状态码的含义和作用是非常重要的,如果前端收到了错误的HTTP状态码,可以根据状态码快速定位问题,从而方便地排查错误;HTTP状态码可以告诉前端请求的处理结果,前端可以根据状态码来确认请求是否成功,从而采取相应的措施。那么我们在日常开发中,需要了解哪些常用的状态码呢?一起来看一下。

200

HTTP状态码为200表示服务器已经成功处理了请求,但这并不表示前后端接口已调通,或者说这只是表示前端发送了请求并成功得到了响应,这只是网络层面的成功。在实际项目开发中,团队在开发之初也会定义一些业务请求状态码,所以可以经常看到浏览器返回的响应状态码是200了,但真实接口返回的却不是200,这需要根据实际场景去判断,从而及时告诉服务端,当前接口的状态。

301

HTTP状态码301表示永久性重定向,当前端发起一个HTTP请求时,如果请求的资源已经被永久性地移动到了另一个URL上,服务器就会返回一个301状态码,同时在响应头中添加一个Location字段,指向资源的新URL。

通常情况下,301状态码被用于网站URL重构、网站迁移或者资源调整等场景,以便在保持资源可访问性的同时,避免了资源访问的错误和混乱。需要注意的是,由于301状态码是永久性重定向,因此前端在接收到301状态码后,会将重定向信息缓存到本地,直到缓存过期或者手动清除为止。因此,在使用301状态码时需要谨慎,避免给用户带来不必要的困扰和误导。

302

HTTP状态码302表示暂时性重定向,当前端发起一个HTTP请求时,如果请求的资源已经被暂时性地移动到了另一个URL上,服务器就会返回一个302状态码,同时在响应头中添加一个Location字段,指向资源的新URL。

和301状态码不同的是,302状态码表示的是暂时性重定向,也就是说,资源的新URL只是暂时的,以后可能会发生变化。因此,前端在接收到302状态码后,不会将重定向信息缓存到本地,而是每次都会向服务器发起新的请求,从而保证资源的及时更新和访问。需要注意的是,由于302状态码是暂时性重定向,因此在使用时需要注意定期检查重定向信息,避免因为资源的变化导致重定向信息失效。

304

HTTP状态码304表示未修改,请记住,这一点在前端性能优化中很关键。当前端发起一个HTTP请求时,如果请求的资源已经缓存在前端本地,并且前端带上了If-Modified-Since或者If-None-Match等条件请求头,服务器会根据这些条件判断资源的修改状态,如果资源没有发生修改,则服务器返回304状态码,告诉前端可以直接使用本地缓存的资源,从而节省了带宽和资源的加载时间。

需要注意的是,由于304状态码并不返回资源本身,而是告诉前端可以直接使用本地缓存的资源,因此服务器在返回304状态码时,并不需要返回响应体,从而提高了响应速度和网络性能。

400

HTTP状态码如果为400,更多的时候要从前端寻找原因。如果请求中包含了无效的语法或者参数错误等问题,服务器会返回一个400状态码,告诉前端请求存在错误,无法被服务器处理。常见的引起400状态码的原因包括:请求参数格式错误、请求参数缺失、请求参数过长等。当前端收到400状态码时,应该检查自己的请求参数和格式,确认是否存在错误,并且及时修改和重新发起请求。

不过前端开发人员需要注意的是,虽然状态码400表示错误的原因并不是服务端的,但在前后端联调中,一定要做到及时沟通,很多时候因为接口文档不够清晰,或者双方理解存在差异,又或者是明明出现了状态码400的情况,但前端同学却无法得知到底是哪个请求参数导致的异常,这些都是需要前后端及时沟通解决的。项目开发是一个团队行为,大家为了共同的目的相聚到一起,尤其是刚参加工作不久的前端人员,遇到不明白的情况更要做到及时沟通。

401

HTTP状态码401表示未授权,当前端发起一个HTTP请求时,如果请求需要进行身份验证或者授权,但是前端没有提供有效的身份信息或者授权信息,服务器就会返回一个401状态码,告诉前端请求未授权,需要进行身份验证或者提供有效的授权信息。

例如我们常见的用户长时间未操作系统导致用户信息失效,服务端会返回401状态码,告诉前端人员应该及时跳转到登录页。

403

HTTP状态码403表示禁止访问,表示前端没有访问请求的资源的权限,即使进行身份验证或者提供有效的授权信息也无法访问。常见的情况包括访问受限的目录、需要特定访问权限的资源等。前端无法通过身份验证或者授权等方式获得服务器的授权和访问权。

例如有些网站的视频只提供给付费用户访问,为了保证安全性,未购买的用户即便打开了视频链接,也会得到403的无权限提示。

有一次我面试一个前端开发,他说之前是做教育网站的。我问付费视频如果未购买的用户打开网页会怎么样,需要做哪些判断,视频的地址是从哪里获取的,防盗链是如何做的。他说前端只是展示课程列表和视频详情,其他内容服务端已经处理好了,未购买的用户看不了视频。这样的回答很明显是不能够加分的。

做为前端人员,很多时候我们更关注页面布局、接口数据的展示,久而久之却忽略了所做项目的业务逻辑。我们在完成前端任务的同时,更应该多去了解一些数据的采集源头,经过前端操作界面处理提交后,最终又会被存储到哪里,最终的用户是谁,这些都是提升业务能力和技术能力的手段。

404

HTTP状态码404表示未找到对应资源,当前端发起一个HTTP请求时,如果请求的URL地址拼写错误、请求的资源被删除或者移动、请求的资源不存在等,服务器就会返回一个404状态码,告诉前端请求的资源不存在或者已被删除。

例如在实际单页面应用项目中,前端定义了项目中可以访问的路由数据,这些路由数据中还应该包含一个404页面的路由,这个时候如果用户输入了未定义的路由,可以将页面跳转到404页面;例如电商网站中,有些商品已下架,如果用户访问了已下架的商品链接,这个时候系统不应该报错,而是应该将页面跳转到404页面中,以供用户继续选购商品。

405

HTTP状态码405表示方法不允许,常见的HTTP方法包括GET、POST、PUT、DELETE等,如果服务端定义的某个接口需要使用GET方法,但因为接口文档定义不明确,或是前端人员疏忽而使用了其他HTTP的方法,服务器就会返回405状态码。可以通过查看响应头中的Allow字段,获取服务器支持的HTTP方法列表,从而选择正确的HTTP方法重新发起请求。

413

HTTP状态码413表示请求实体过大,当前端端发起一个HTTP请求时,如果请求中包含的实体内容太大,超出了服务器的处理能力,服务器就会返回一个413状态码,告诉客户端请求实体过大,无法处理。

例如开发上传文件功能的时候,如果上传文件过大,就会造成HTTP状态码为413的情况。这个时候可以通过服务端增大处理限制的方式解决,但这样做对系统性能和安全性存在一定的隐患,所以从前端角度着手,提示用户最大上传限制,或是做分批上传将会是一个很好的选择。

415

HTTP状态码415表示不支持的媒体类型,当客户端发起一个HTTP请求时,如果请求中包含的媒体类型不被服务器支持,服务器就会返回一个415状态码,告诉客户端请求中包含的媒体类型不被支持。常见的引起415状态码的原因包括:请求中包含的媒体类型不正确、请求中缺少必要的媒体类型等。当客户端收到415状态码时,应该检查自己的请求中包含的媒体类型是否正确,并且尝试使用服务器支持的媒体类型重新发起请求。

例如我们日常项目开发中,大部分服务端接口请求入参为JSON格式,所以请求头中Content-Type属性值是application/json,但如果涉及到图片上传这样的功能,请求头中Content-Type属性值就需要改为multipart/form-data。如果未按规范设定请求头信息,则会出现HTTP状态码415的异常信息。

500

如果说HTTP状态码以4xx开头的异常情况,大部分需要从前端角度处理解决,那么遇到HTTP状态码为5xx开头的情况,前端人员就可以不比区分那么多了,但是需要及时告知服务端人员当前的code码值,从而协助服务端人员快速解决定位问题。


刷题思考

    HTTP状态码这道题很多面试官会觉得非常有价值,因为熟知状态码可以在开发中更快速的发现问题从而解决问题,所以这是对以往工作经验的一种考量。很多求职者在回答这道题的时候,不能从200到500依次回答,会容易差距显回答混乱的问题,也有求职者仅仅只是回答一个数字而不能合理举例,也是不应该的。


类似考点

    与本小节相关的考点大多已经涉及实际工作经验类型的场景题目了,例如请你说一说如果在前后端联调中出现了400的错误码,你如何应对?例如有产品人员告知某个链接要将重定向跳转状态码改为301,那么你应该怎么做?例如你在前后端联调中出现了405的错误码,你如何应对?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经海路大白狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值