zoukankan      html  css  js  c++  java
  • 常见http响应状态码(status)

    1.100-199信息响应

    100 Continue: 服务器通知浏览器之前一切正常,请客户端继续请求,如果请求结束,可忽略;

    101 Switching Protocal: 针对请求头的Upgrade返回的信息。表明服务器正在切换到指定的协议。

    Upgrade是HTTP1.1提出的升级机制,可以升级到其他协议。

    如果使用,客户端需要设置如下:

    Connection: Upgrade
    Upgrade: protocol-name[/protocol-version]

    服务器如果不同意直接忽略;如果同意,响应如下:

    HTTP/1.1 101 Switching Protocols
    Connection: upgrade
    Upgrade: protocol-name[/protocol-version]

    例如:1)升级WebSocket

    客户端请求如下:

    GET ws://example.com/ HTTP/1.1
    Connection: Upgrade
    Upgrade: websocket
    Origin: http://example.com
    Sec-WebSocket-Version: 13
    Sec-WebSocket-Key: d4egt7snxxxxxx2WcaMQlA==
    Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

    服务器如果同意,响应如下:

    HTTP/1.1 101 Switching Protocols
    Connection: Upgrade
    Upgrade: websocket
    Sec-WebSocket-Accept: gczJQPmQ4Ixxxxxx6pZO8U7UbZs=

    2)升级到http2

     客户端请求如下:

    GET / HTTP/1.1
    Host: example.com
    Connection: Upgrade, HTTP2-Settings
    Upgrade: h2c // h2c是http2的名称
    HTTP2-Settings: <base64url encoding of HTTP/2 SETTINGS payload>

    服务端如果同意,响应如下:

    HTTP/1.1 101 Switching Protocols
    Connection: Upgrade
    Upgrade: h2c

    103 Early Hints: 此状态代码主要用于与Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源

    2.200-299成功响应

    200 OK: 请求成功

    201 Created: 常用于POST,PUT 请求,表明请求已经成功,并新建了一个资源。并在响应体中返回路径。

    202 Accepted: 请求已经接收到,但没有响应,稍后也不会返回一个异步请求结果。 该状态码适用于等待其他进程处理或者批处理的场景。

    203 No-Authoritative Information: 表明响应返回的元信息(meta-infomation)和最初的服务器不同,而是从本地或者第三方获取的。

    主要用于其他资源的镜像和备份。除了前面的情况,首选还是200。

    204 No Content: 请求没有数据返回,但是头信息有用。用户代理(浏览器)会更新缓存的头信息。

    205 Reset Content: 告诉用户代理(浏览器)重置发送该请求的文档。

    206 Partical Content: 当客户端使用Range请求头时,返回该状态码。

    // 通过curl发起http请求-->响应行为:HTTP/1.1 206 Partial Content
    curl -v --header "Range:bytes=0-3"  http://www.baidu.com

    名次解释: 用户代理: 代替用户运行的软件,如web浏览器,或者邮件阅读器。

    3.300-399重定向消息

    300 Multiple Choice: 返回多个响应,需要浏览器或者用户选择;

    301 Moved Permanently: 请求资源的URL被永久的改变,新的URL会在响应的Location中给出。

    浏览器到新的URL重新请求资源,因为有些客户端会把请求方式method改成GET。所以该状态码建议GET和HEAD方法中使用。

    搜索引擎会更新地址到资源的链接(SEO中‘link-judge’被发送到新的URL)。

    302 Found:  请求资源的URL被暂时修改到Location提供的URL。未来可能还会有新的修改。

    浏览器会根据新的URL重新请求资源。有些客户端会把方法method改为GET,建议在GET和HEAD方法中使用。

    搜索引擎不会更改URL到资源的。

    // 应用
    负载均衡

    303 See Other: 服务通过返回的响应数据指导客户端通过GET方法去另一个URL获取资源。

    通常用于POST或者PUT的请求返回结果,重定向到信息提示页面或者进度展示页面。

    重定向页面的方法是GET方法。

    304 Not Modified: 资源未变更。服务器根据请求头判断,需要资源未修改,只返回响应头;否则将资源一起返回。

    发生场景:1)请求方法安全(如GET,HEAD请求)

    2)条件请求并且使用了If-None-Match或者If-Modified-Since 的请求头

    如果想使用200状态码达到相同304效果,需要强制缓存,需要额外的请求头:Cache-Control, Expires, Vary

    307 Temporary Redirect: 临时重定向。基本和302相同。

    唯一的区别是这个状态码严格禁止浏览器到新URL请求资源时修改原来的请求方式和请求体。

    就是说原来使用POST,这次还是要使用POST。

    如果想要用PUT方法去修改一个服务器上没有的资源,可以用303状态码

    如果想要把一个POST方法改为GET,请使用303。

    308 Permanent Redirect: 永久重定向。基本和301相同。但是严格禁止修改请求方式和请求体。

    4. 400-499 客户端错误响应

    400 Bad Request: 请求语法有问题,服务器无法识别。

    没有host请求头字段,或者设置了超过一个的host请求头字段。

    401 UnAuthorized: 客户端未授权该请求。缺乏有效的身份认证凭证,一般可能是未登陆。登陆后一般都解决问题。

    403 Forbidden: 服务器拒绝响应。权限不足。

    404 Not Found: URL无效或者URL有效但是没有资源。

    405 Method Not Allowed: 请求方式Method不允许。但是GET和HEAD属于强制方式,不能返回这个状态码。

    406 Not Acceptable: 资源类型不符合服务器要求。

    407 Proxy Authorization Required: 需要代理授权。

    408 Request Timeout:服务器将不再使用的连接关闭。响应头会有Connection: close。

    426 Upgrade Required: 告诉客户端需要升级通信协议。

    5. 500-599 服务器错误响应

    500 Internal Server Error: 服务器内部错误,未捕获。

    502 Bad Gateway: 服务器作为网关使用时,收到上游服务器返回的无效响应。

    503 Service Unavailable: 无法服务。一般发生在因维护而停机或者服务过载。

    一般还会伴随着返回一个响应头Retry-After: 说明恢复服务的估计时间。

    504 Gateway Timeout: 网关超时。服务器作为网关或者代理,不能及时从上游服务器获取响应返回给客户端。

    505 Http Version Not Supported: 发出的请求http版本服务器不支持。如果请求通过http2发送,服务器不支持http2.0,就会返回该状态码。

  • 相关阅读:
    [译文] 实体与值对象到底是不是一回事?
    实现 WebApi 自托管服务宿主于 WinForms 及其交互
    [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
    [译文] 为什么你在 C# 里总是应该使用 "var" 关键字
    通过设置iis在局域网中访问网页
    windows 10 安装使用kafka
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 4) 整合Polly实现瞬时故障处理
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 3) 使用Handler实现传出请求中间件
    ASP.NET Core 2.1 中的 HttpClientFactory (Part 2) 定义命名化和类型化的客户端
    Asp.net Core 2.0 OpenId Connect Handler缺失Claims?
  • 原文地址:https://www.cnblogs.com/lyraLee/p/11588417.html
Copyright © 2011-2022 走看看