前端网络相关试题
Web安全
一、 你所了解到的Web攻击技术
(1) XSS攻击
(2) CSRF攻击
(3) 网络劫持攻击
(4) 控制台注入代码
(5) 钓鱼
详细参见:http://blog.csdn.net/fengyinchao/article/details/52303118
如何防止XSS攻击?
(1) 将前端输出数据都进行转义
(2) 将输出的字符串中的\反斜杠进行转义
(3) 从url中获取的信息,防止方法是由后端获取,在前端转义后再行输出
(4) 使用cookie的HttpOnly属性,保护好cookie
详细参见:http://blog.csdn.net/fengyinchao/article/details/52303118
输入url后的加载过程
1) 查找域名对应IP地址
2) 建立连接(TCP的三次握手)
3) 构建网页
4) 断开连接(TCP的四次挥手)
说说TCP传输的三次握手四次挥手策略
为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略。用TCP协议把数据包送出去后,TCP不会对传送 后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志:SYN和ACK。
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。
最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
断开一个TCP连接则需要“四次挥手”:
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不 会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可 以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。
聊一聊网页的分段传输与渲染
从下面几个方面说:
(1) CHUNKED编码
(2) BIGPIPE
(3) 分段传输与bigpipe适用场景
详细参见:https://segmentfault.com/a/1190000005989601 ? ea=984496
http状态码有那些,分别代表什么意思
简单版:
1**(信息类):表示接收到请求并且继续处理
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
2**(响应成功):表示动作被成功接收、理解和接受
200 OK 正常返回信息
201 Created 请求成功并且服务器创建了新的资源
202 Accepted 服务器已接受请求,但尚未处理
3**(重定向类):为了完成指定的动作,必须接受进一步处理
301 Moved Permanently 请求的网页已永久移动到新位置。
302 Found 临时性重定向。
303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
304 Not Modified 自从上次请求后,请求的网页未修改过。
4**(客户端错误类):请求包含错误语法或不能正确执行
400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized 请求未授权。
403 Forbidden 禁止访问。
404 Not Found 找不到如何与 URI 相匹配的资源。
5**(服务端错误类):服务器不能正确执行一个正确的请求
500 Internal Server Error 最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
完整版
1**(信息类):表示接收到请求并且继续处理
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
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错误表明可连接服务器,但服务器无法取得所请求的网页,请求资源不存在。eg:输入了错误的URL
405——用户在Request一Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content一Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If一Range请求头字段
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:由于超载或停机维护,服务器目前无法使用,一段时间后可能恢复正常
HTTP的请求方法
HTTP(Hypertext Transfer Protocol)的八种请求方法:
方法 |
概述 |
❤GET |
请求页面的详细信息,并返回实体主体。 |
❤POST |
向指定资源提交数据进行数据请求(例如提交表单,或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT |
从客户端向服务器传送的数据取代指定的文档内容。 |
DELETE |
请服务器删除指定的页面。 |
HEAD |
类似与Get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
CONNECT |
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS |
允许客户端查看服务器的性能。 |
TRACE |
回显服务器收到的请求,主要用于测试或诊断。
|
http与https区别?
所有的隐私类API调用都需要https协议才能启动
隐私类API:
地理位置(navigator.geolocation.getCurrentLocaiton)
摄像头和麦克(navigator.userMedia)
集群
前端服务器 loadbalance 负载均衡服务器 nginx