简单版:
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
报头域一起使用
HTTP401.1
——未授权:登录失败
HTTP401.2
——未授权:服务器配置问题导致登录失败
HTTP401.3
——ACL 禁止访问资源
HTTP401.4
——未授权:授权被筛选器拒绝
HTTP401.5
——未授权:ISAPI或CGI授权失败
402
——保留有效ChargeTo
头响应
403
——禁止访问,服务器收到请求,但是拒绝提供服务
HTTP403.1
——禁止访问:禁止可执行访问
HTTP403.2
——禁止访问:禁止读访问
HTTP403.3
——禁止访问:禁止写访问
HTTP403.4
——禁止访问:要求SSL
HTTP403.5
——禁止访问:要求SSL128
HTTP403.6
——禁止访问:IP地址被拒绝
HTTP403.7
——禁止访问:要求客户证书
HTTP403.8
——禁止访问:禁止站点访问
HTTP403.9
——禁止访问:连接的用户过多
HTTP403.10
——禁止访问:配置无效
HTTP403.11
——禁止访问:密码更改
HTTP403.12
——禁止访问:映射器拒绝访问
HTTP403.13
——禁止访问:客户证书已被吊销
HTTP403.15
——禁止访问:客户访问许可过多
HTTP403.16
——禁止访问:客户证书不可信或者无效
HTTP403.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**
(服务端错误类):服务器不能正确执行一个正确的请求
HTTP500
——服务器遇到错误,无法完成请求
HTTP500.100
——内部服务器错误——ASP错误
HTTP500.11
——服务器关闭
HTTP500.12
——应用程序重新启动
HTTP500.13
——服务器太忙
HTTP500.14
——应用程序无效
HTTP500.15
——不允许请求global.asa
Error
501
——未实现HTTP
502
——网关错误
HTTP503
——由于超载或停机维护,服务器目前无法使用,一段时间后可能恢复正常
一个页面从输入URL到页面加载显示完成,这个过程发生了什么?(流程越详细越好)
从URL规范、HTTP协议、DNS、CDN、数据库查询到浏览器解析、CSS规则构建、
layout
、paint
、onload/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的详细过程
加载一个资源的过程
安全性
XSRF跨站请求伪造
在博客写文章,同时偷偷插入一段<script>
cookie
,发送到自己的服务器cookie
发送到攻击者的服务器