HTTP状态码

技术文档

HTTP状态码有哪些?分别代表什么?

简单版:

  • 100-continue:继续,一般在发送post请求时,已发送http header之后服务器端将返回此信息表示确认,之后发送具体参数信息。
  • 200-OK:正常返回信息
  • 201-created:请求成功并且服务器创建了新的资源
  • 202-Accepted:服务器已接受请求,但尚未处理
  • 301-Moved Permanently:请求的网页已经永久移动到新的位置
  • 302-Found:临时性重定向
  • 303-See Other:临时性重定向,且总是使用GET请求新的URI
  • 304-Not Modified:自从上次请求后,请求的网页未修改过
  • 400-Bad Request:服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求
  • 401-Unauthorized:请求未授权
  • 403-Forbidden:禁止访问
  • 404-Not Found:找不到如何与URI相匹配的资源
  • 500-Internal Server Error:最常见的服务器端错误
  • 503-Server Unavailable:服务器端暂时无法处理请求(可能是过载或维护)

完整版:

  • 1**(信息类):表示接收到请求并且继续处理
  • 100——客户必须继续发出请求
  • 101——客户要求服务器根据请求转换HTML协议版本
  • 2**(响应成功):表示动作被成功接收、理解和接受
  • 200——表明该请求被成功地完成,所请求的资源发送回客户端
  • 201——提示知道新文件的URL
  • 202——接受和处理、但处理未完成
  • 203——返回信息不确定或不完整
  • 204——请求收到,但返回信息为空
  • 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
  • 206——服务器已经完成了部分用户的GET请求
  • 3**(重定向类):为了完成指定的动作,必须接受进一步处理
  • 300——请求的资源可在多处得到
  • 301——本网页被永久性转移到另一个URL
  • 302——请求的网页被转移到一个新的地址,但客户访问仍继续通过原始URL地址,重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的request
  • 303——建议客户访问其他URL或访问方式
  • 304——自从上次请求后,请求的网页未修改过,服务器返回此响应时,不会返回网页内容,代表上次的文档已经被缓存,还可以继续使用。
  • 305——请求的资源必须从服务器指定的地址得到
  • 306——前一版本HTTP中使用的代码,现行版本中不再使用
  • 307——申明请求的资源临时性删除
  • 4**(客户端错误类):请求包含错误语法或不能正确执行
  • 400——客户端请求有语法错误,不能被服务器所理解
  • 401——请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
  • HTTP 401.1——未授权:登录失败
  • HTTP 401.2——未授权:服务器配置问题导致登录失败
  • HTTP 401.3——ACL 禁止访问资源
  • HTTP 401.4——未授权:授权被筛选器拒绝
  • HTTP 401.5——未授权:ISAPI或CGI授权失败
  • 402——保留有效ChargeTo头响应
  • 403——禁止访问,服务器收到请求,但是拒绝提供服务
  • HTTP 403.1——禁止访问:禁止可执行访问
  • HTTP 403.2——禁止访问:禁止读访问
  • HTTP 403.3——禁止访问:禁止写访问
  • HTTP 403.4——禁止访问:要求SSL
  • HTTP 403.5——禁止访问:要求SSL 128
  • HTTP 403.6——禁止访问:IP地址被拒绝
  • HTTP 403.7——禁止访问:要求客户证书
  • HTTP 403.8——禁止访问:禁止站点访问
  • HTTP 403.9——禁止访问:连接的用户过多
  • HTTP 403.10——禁止访问:配置无效
  • HTTP 403.11——禁止访问:密码更改
  • HTTP 403.12——禁止访问:映射器拒绝访问
  • HTTP 403.13——禁止访问:客户证书已被吊销
  • HTTP 403.15——禁止访问:客户访问许可过多
  • HTTP 403.16——禁止访问:客户证书不可信或者无效
  • HTTP 403.17——禁止访问:客户证书已经到期或者尚未生效
  • 404——一个404错误表明可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。
  • 405——用户在Request-Line字段定义的方法不予许
  • 406——根据用户发送的Accept头,请求资源不可访问
  • 407——类似401,用户必须首先在代理服务器上得到授权
  • 408——客户端没有在用户指定的时间内完成请求
  • 409——对当前资源状态,请求不能完成
  • 410——服务器上不再有此资源,且无进一步的参考地址
  • 411——服务器拒绝用户定义的Content-Length属性请求
  • 412——一个或多个请求头字段在当前请求中错误
  • 413——请求的资源大于服务器允许的大小
  • 414——请求的资源URL长于服务器允许的长度
  • 415——请求的资源不支持请求项目格式
  • 416——请求中包含Range请求头字段,在当前请求资源范围内没有Range指示值,请求也不包含If-Rane请求头字段
  • 417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求。
  • 5**(服务端错误类):服务器不能正确执行一个正确的请求
  • HTTP 500——服务器遇到错误,无法完成请求
  • HTTP 500.100——内部服务器错误——ASP错误
  • HTTP 500.11——服务器关闭
  • HTTP 500.12——应用程序重新启动
  • HTTP 500.13——服务器太忙
  • HTTP 500.14——应用程序无效
  • HTTP 500.15——不允许请求global.asa
  • Error 501——未实现
  • HTTP 502——网关错误
  • HTTP 503——由于超载或停机维护,服务器目前无法使用,一段时间后可能恢复正常

一个页面从输入URL到页面加载显示完成,这个过程发生了什么?(流程越详细越好)

  • 从URL规范、HTTP协议、DNS、CDN、数据库查询到浏览器解析、CSS规则构建、layoutpaintonload/domready、JS执行、JS API绑定等
  • 1、浏览器会开启一个线程来处理这个请求,对URL分析判断如果是HTTP协议就按照Web方式来处理;
  • 2、调用浏览器内核中的对应方法,比如webview 中的loadUrl方法;
  • 3、通过DNS解析获取网址的IP地址,设置UA等信息发出第二个GET请求;
  • 4、记性HTTP协议会话,客户端发送报头(请求报头);
  • 5、进入到web服务器上的Web Server,如Accept、Tomcat、Node.js等服务器;
  • 6、进入部署好的后端应用,如PHP、Java、JavaScript、python等,找到对应的请求处理;
  • 7、处理结束反馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304
  • 8、浏览器开始下载HTML文档(响应报头,状态码200),同时是使用缓存;
  • 9、文档树建立,根据标记请求所需要指定MIME类型的文件(比如css、js),同时设置了cookie
  • 10、页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。
  • 浏览器把请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;
  • 服务器交给后台处理完成后返回数据,浏览器接收文件;
  • 浏览器对加载到的资源进行语法解析,建立相应的内部数据结构;
  • 载入解析好的资源文件,渲染页面显示内容。

从输入URL(或跳转页面)到获取HTML的详细过程

加载一个资源的过程

  • 浏览器根据DNS服务器得到域名的IP地址
  • 向这个IP的机器发送HTTP请求
  • 服务器收到、处理并返回HTTP请求
  • 浏览器得到返回内容

安全性

  • XSS跨站请求攻击
  • XSRF跨站请求伪造
  • 在博客写文章,同时偷偷插入一段<script-
  • 攻击代码中,获取cookie,发送到自己的服务器
  • 发布博客,有人查看博客
  • 会把查看者的cookie发送到攻击者的服务器

寒青
前端工程师

[链接]

10.2k 声望
3.7k 粉丝
0 条评论
推荐阅读
再也不学AJAX了!(三)跨域获取资源 ① - 同源策略
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第四篇,最近更新于 2023 年 1...

libinfs19阅读 4k评论 4

封面图
Chrome 103支持使用本地字体,纯前端导出PDF优化
在前端导出PDF,解决中文乱码一直是一个头疼的问题。要解决这个问题,需要将ttf等字体文件内容注册到页面PDF生成器中。但是之前网页是没有权限直接获取客户机器字体文件,这时就需要从服务器下载字体文件或者提示...

葡萄城技术团队3阅读 13.9k

HTTP,WebSocket 和 聊天室
在涉及到网络层面的相关内容时,不免会联系到 HTTP、TCP、WebSocket 等,但相信大部分人都并不是很清楚其中的一些关系和概念,特别是需要你去做语言表述时,网上有不少优秀的资料和文章,但知识仍需要自己去消化...

熊的猫4阅读 587

封面图
基于QUIC协议的HTTP/3,你了解多少?
前言了解一下HTTP发展史:HTTP/0.9-HTTP/1.0-HTTP/1.1-HTTP/2.0多个TCP连接 {代码...} Keep-alive {代码...} 管线化 {代码...} 多路复用 {代码...} {代码...} 并行多路复用的请求和响应不会相互阻塞尽管传输多个...

Henryk2阅读 1.2k评论 1

gitlab-ce将https修改为http
索性我们禁用gitlab的https功能,将期恢复为http。后期我们再在部署一个nginx进行数据转发,然后在nginx上起用https并设置证书。这样应该就规避了gitlab的证书错误问题。

myskies1阅读 651

设计模式那些事(3)——使用建造者模式封装go的http库
{代码...} 具体实现 {代码...} 使用 {代码...}

爆裂Gopher1阅读 774

封面图
为什么使用 golang http包 会把 linux 句柄打满?
请求 https 的地址,为了绕过 tls ,加上了 TLSClientConfig: &amp;tls.Config{InsecureSkipVerify: true} 配置

阿兵云原生阅读 829

封面图

[链接]

10.2k 声望
3.7k 粉丝
宣传栏