• 常见的 HTTP Status Codes


    前言

    网页开发做久了, 自然而且会接触到许多 status code. 这篇列出一些常见的 status code. 初学者可以把它们学上来. 真的很常见哦.

    参考

    Wikipedia – List of HTTP status codes

    2xx

    2xx 的 codes 都属于成功的 request.

    200 – OK, 正常返回. 最常见

    201 – Created, restful create resource, post 成功后会返回 201, 会附带 created resource 的 url.

    204 – No Content,  restful update / delete resource, put / delete 成功后会返回 204

    3xx

    3xx 的 codes 都表示跳转. 但它不代表 request fail 哦, 只是地址换了, 或者 succeed 后带你去 thank you 页面这种都是 3xx 的范畴.

    301 – Moved Permanently, 如果地址永久换了就返回这个 (SEO 很常用)

    302 – Found, 如果只是暂时换地址那就用 302 (SEO 很常用)

    303 – See Other, 某种情况下取代了 302. 下面会讲细节

    304 – Not Modified

    比如 client 要下载一个很大的资源, request 的时候就可以问 server If-Modified-Since, server 就明白 client 有缓存, 但担心过期.

    如果这时资源没有改动, 那就可以返回 304. 这样 client 就不用重新下载, 直接用缓存即可.

    307 – Temporary Redirect, 某种情况下取代了 302, 下面会讲细节

    308 – Permanent Redirect, 某种情况下取代了 301, 下面会讲细节

    302, 303, 307 和 301, 308 的关系

    它们关系密切而且有历史包袱, 所以有点乱.

    参考: 知乎 – HTTP 中的 301、302、303、307、308 响应状态码

    最早的时候只有 301, 302

    1 个 POST request 被返回 302, by right 应该继续用 POST, 但是很多游览器会改成 GET. 这和规范有冲突, 但游览器没有打算改

    于是规范就出了 303 和 307 替代 302. 

    303 表示不管怎样, 返回后用 GET 去拿

    307 则要求 client (游览器) 不可以将 POST 换成 GET.

    有了 303 和 307 以后, 302 其实就没用了, 但要向后兼容所以也不可能丢掉它, 于是规范就改了

    302 就是会把 POST 换成 GET.

    301 也是同样的问题, POST 会变成 GET, 308 则不会.

    小总结 

    如果只考虑 GET, 那么用 301, 302 可以了.

    如果不在乎 POST 变成 GET, 那么用 301, 302 可以了

    如果你想强调 POST 变成 GET, 那么用 303

    如果你不想 POST 变成 GET, 那么用 307, 308

    4xx

    4xx 属于 fail request. 通常是那些预料的到的 error, 而不是 server down 那种完全 unexpected 的.

    400 Bad Request, 常用于 validation 不过关的返回, 比如 required 的 property 没有 value. 就可以返回 400.

    401 Unauthorized, 没有登录, 无法访问到受保护的资源

    403 Forbidden, 登入了, 但是权限不够, 无法访问到受保护的资源.

    404 Not Found, 找不到资源. 这个是最常见的了.

    405 Method Not Allowed, 某个地址是 handle POST request 的, 结果 client 发了 GET. 我用 Postman 做 Web API 测试时, 经常忘记选 Method, 所以常看到这个 error.

    406 Not Acceptable, client request 的时候会在 header 表面能接受的资源返回格式, 如果 server 发现 response 的格式没有在能接受的范围内就会返回 406

    408 Request Timeout, server 会 set 一个时间, 如果 request 处理太久就会直接返回 408.

    415 Unsupported Media Type, server 不接受 client post 的内容格式, 和 405 有点反过来的味道.

    429 Too Many Requests, client 在很短的时候见发了太多的请求. .NET 7 正好出了这样一个限制 feature Youtube – The NEW Rate Limiter of .NET 7 is AWESOME

    5xx

    5xx 属于 server unexpected error. 通常发生就要找 IT support 看看了.

    500 Internal Server Error. 通常是程序有 Bug

    503 Service Unavailable, server 完全 down 了

    总结

    上面都是比较常见的.如果是初学者, 我觉得至少要懂 200, 301, 302, 401, 403, 404, 500, 503.

  • 相关阅读:
    linux apache + mysql +php no-yum
    linux apache + mysql +php
    1像素border
    vue-router配置
    错误Cannot find module 'stylus'
    高仿饿了么mock本地数据
    vue2.0高仿饿了么better-scroll
    npm 常用命令
    Gulp工具常用插件
    git总结
  • 原文地址:https://www.cnblogs.com/keatkeat/p/16296396.html
Copyright © 2020-2023  润新知