首页 > 其他分享 >HTTP 中的常用状态码及使用场景

HTTP 中的常用状态码及使用场景

时间:2022-08-23 19:36:04浏览次数:68  
标签:状态 缓存 HTTP 请求 重定向 码及 场景 客户端

其HTTP 状态码则代表了当前请求的状态,比如客户端还是服务端错误之类的

1xx 消息
这类状态码,代表请求已被服务端接受,但服务端还要继续进行处理。

100 Continue
继续。

服务端收到请求,并表示可以继续。在客户端准备推送较大的数据时,可以用 100 表示允许。

101 Switching Protocols
切换协议。

比较常见的是响应 WebSockets 连接,浏览器会先发送 HTTP 请求,在请求头里带上希望升级为 WebSockets 协议的相关信息。

服务端收到后,如果支持 WebSockets,就会返回这个状态码 101,进行 HTTP 到 WebSockets 的协议切换。

2xx 成功
这类状态码代表服务已被正常处理。

200 OK
成功。

200 是用得最多的状态码,前端请求接口,数据正常返回,就会拿到这个状态码。这是大家最喜欢看到的状态码。

3xx 重定向
代表客户端需要进行进一步操作才能完成请求。

301 Moved Permanently
永久重定向。

请求的资源被永久移动到其他位置。

假如我们的一篇博客的 url 地址发生了永久的改变,但用户收藏夹里的链接还是旧的,我们就可以在用户请求旧链接时,返回 301 状态码,并赋上一个重定向地址。

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

这样用户就能跳到正确的新地址中。

这新的重定向地址会被浏览器缓存,下次用户访问旧链接时,就不会发请求拿到 301,而是直接就跳到重定向地址了。

所以设置重定向地址时要小心点,别搞错了。

还有一个常用用途是 HTTP 链接跳转到 HTTPS 链接。

比如我们访问 http://zhihu.com/,就会跳转到 https://www.zhihu.com/

 

302 Found
临时重定向。

原始描述短语为 Moved Temporarily

适合一些临时的重定向操作,比如因为服务器崩溃导致一些页面无法提供正确的访问,在修复期间,则可以通过 302 先暂时地重定向到一个新的地址。修复完后再让用户继续访问原链接。

302 不会持久缓存,但可以设置缓存时间持续一段时间。

HTTP/1.1 302 Found
Location: https://www-temp.example.org/
Cache-control: private; max-age=600

304 Not Modified
没有改变。

304 指的是资源相比上次没有发生变化,客户端可以继续使用之前缓存的资源,以减轻浏览器负担。

这里涉及到了 HTTP 缓存中的强缓存和协商缓存知识。协商缓存中会用到 304 状态码。

具体可以看我之前写的一篇文章:《HTTP 缓存策略:强缓存和协商缓存》

4xx 客户端错误
客户端的问题。

400 Bad Request
不好的请求。

通用的客户端错误,表示问题是出在客户端身上的。比如传的参数不对。

在前端和后端对接接口时,比较常看到这个错误,因为容易写错参数名,或者后端新增或修改了参数。

404 Not Found
不存在。

广为人知的状态码,代表 url 对应资源不存在。

比如一些文章被删除,是直接在数据库中进行不可逆地彻底删除的。然后就导致用户访问这个页面时,服务器找不到对应数据,然后就返回一个 404,并提示 “页面不存在”。

405 Method Not Allowed
方法不被允许。

请求方法没用对,比如一个请求应该用 POST,你却用了 GET 请求,就会得到 405。

拿到 405 通常说明你的 url 没错,错的是方法。如果 url 也不对,你拿到的将是 404。

5xx服务器错误
服务端的问题,快去找后端,别老抓着前端一顿问。

500 Internal Server Error
内部服务错误。

后端服务器的代码出了 bug,比如读取了一个 null 的属性,就会导致服务无法正常运行下去,然后后端就会捕获(catch)这个错误,返回 500,告知是后端服务器出了问题。

严重的情况下,后端服务直接崩溃。

502 Bad Gateway
网关错误。

比如后端服务崩溃,但中间的一些代理服务器 Web Server(比如 Ngnix)还能正确运行。但因为无法访问到后端服务,所以就会返回一个 502。

504 Gateway Timout
网关超时。

网关还在,但后端服务因为各种原因(比如因为一个死循环卡死了),导致一直没有响应回来,在过了一段时间后网关了依旧没能收到消息,就会给客户端返回 504 网关超时。

标签:状态,缓存,HTTP,请求,重定向,码及,场景,客户端
From: https://www.cnblogs.com/Sweetp/p/16617506.html

相关文章

  • HttpServiceDispatcher
    packagewm.http;importio.netty.buffer.ByteBuf;importio.netty.buffer.Unpooled;importio.netty.channel.*;importio.netty.handler.codec.http.*;importio.netty.h......
  • 解决办法:git错误 error: failed to push some refs to 'https://github.com/...
    今天提新分支代码发现这个错误,在网上尝试了很多未果。最后发现是项目没有分配开发权限,只是浏览者的权限。分下权限重新gitpush就好了。下面是有权限的时候解决方法:问题......
  • pod资源的健康检查-readiness探针的httpGet使用
    livenessProbe:健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器readinessProbe:可用性检查,周期性检查服务是否可用,不可用将从service的endpoints中移除同一个容......
  • IHttpClientFactory
    netcore3.1控制台安装包如下  F12先看你要请求的的页面(下图是我要请求的页面接口)  因为大部分信息都是固定格式,先看有用信息,下图有用信息是:RequestURL:http......
  • iframe发布生产是HTTPS环境时报错,资源文件访问被阻止
    解决办法:一:在源代码中查找混合内容您可以在源代码中直接搜索混合内容。在源代码中搜索http开头的资源链接文件,将其替换为https。二:使用“upgrade-insecure-request......
  • Navicat使用HTTP通道连接远程服务器的SQLite文件(包含服务端搭建http服务)
    Navicat使用HTTP通道连接远程服务器的SQLite文件(包含服务端搭建http服务)基本原理数据库端口没开放外网访问的时候,Navicat在外网无法访问数据库。可以通过在服务器上运行......
  • HTTP cookie
    Asessioncookie,alsoknownasanin-memorycookie,transientcookieornon-persistentcookie,existsonlyintemporarymemorywhiletheusernavigatesthewe......
  • HTTPS 一定是安全的吗?
    大家好,我是小林。上周有位读者在面字节时被问道这么一个问题:HTTPS一定安全可靠吗?这个问题的场景是这样的:客户端通过浏览器向服务端发起HTTPS请求时,被「假基站」转发到......
  • 方法的引用-冗余的Lambda场景以及通过对象名引用成员方法
    方法引用在使用Lambda表达式的时候,实际上我们传递的是一段解决问题的代码,给什么参数做什么操作。冗余的Lambda场景函数式接口以应用Lambda表达式:函数式接口:publicin......
  • HTTP协议
    二、HTTP协议1.HTTP协议概述HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类......