1、http状态码
2开头 (请求成功)表示成功处理了请求的状态代码3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。从输入URL按下回车到页面展现,总的来说发生了一下几个过程:
DNS 解析:将域名解析成 IP 地址
TCP 连接:TCP 三次握手发送 HTTP 请求服务器处理请求并返回报文浏览器解析渲染页面断开连接:TCP 四次挥手1.说一下http和https
http:http是最为广泛应用的互联网传输协议,即超文本传输协议。HTTP是一个属于应用层的面向对象的协议。由于其简捷、快速的方式,适用于分布式超媒体信息系统。简介:超文本传输协议,
1)http是最为广泛引用的互联网传输协议,https是http的安全版,它的安全基础是SSL加密传输协议2)http是明文传输的,传送报文容易被黑客截取3)https需要到CA申请证书,可以认证客户端和服务端,确保正确发送到客户端和服务器4)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。(Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。5)Https协议的加密范围也比较有限。最关键的,SSL证书的信用链体系并不安全6)http效率更高,https需要绑定ip,https并非绝对安全 2、tcp三次握手,一句话概括第一次握手:客户端向移动端发送连接请求第二次握手:服务端收到请求,向客户端进行反馈第三次握手:第二次握手后,客户端确认当前请求是否继续有效3、TCP和UDP的区别
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议;UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信TCP对系统资源要求较多,UDP对系统资源要求较少。 4、WebSocket的实现和应用WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。应用:ajax轮询(异步) long poll(阻塞)服务端就可以主动推送信息给客户端,只需要经过一次HTTP请求,就可以做到源源不断的信息传送了 8. 几个很实用的BOM属性对象方法?window.navigator/location/history
9、兼容前缀-webkit- chrome、safari-moz- firefox
-ms- IE
-o- opera
10. 说一下http2.0/http1.1/http1.0http1.0:无状态无连接。无连接指每次连接只处理一个请求,无状态是指协议对于事务处理没有记忆能力http1.1:持久连接请求管道化通常,http请求总是顺序发送的,下一个请求只有在当前请求的响应被完全接受的时候才会被发送。由于网络延迟和带宽的限制,这样会导致在服务器发送下一个响应的时候中间有很大的延迟。HTTP/1.1 允许多个http请求通过一个套接字同时被输出 ,而不用等待相应的响应。然后请求者就会等待各自的响应,这些响应是按照之前请求的顺序依次到达。增加缓存处理(新的字段如cache-control)增加Host字段、支持断点传输等(把文件分成几部分)在HTTP/1.1中请求头已经默认使用Connection: keep-alive,避免了连接建立和释放的开销,但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。http2.0:二进制分帧多路复用(或连接共享)所有的HTTP2.0通信都在一个TCP连接上完成,这个连接可以承载任意数量的双向数据流。头部压缩服务器推送11. 补充400和401、403状态码
400:服务器不理解请求的语法。401:没有通过身份验证403:服务器拒绝访问404:服务器上找不到所请求的资源13. Cookie、sessionStorage、localStorage的区别
Cookie有数量和大小(4kb)的限制,且需要我们自行封装api需要指定作用域。容易被篡改,不安全webStorage分为sessionStorage 和 localStorageWebStorage并不作为HTTP header发送到浏览器,所以相对安全sessionStorage在会话结束后删除,localStorage是持久化存储,若不主动删除,则永久有效。有自己的api。5mb建议大小14. 说一下web worker
Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。 16. iframe是什么?有什么缺点?iframe也称作嵌入式框架,嵌入式框架和框架网页类似,它可以把一个网页的框架和内容嵌入在现有的网页中。iframe标签的一些基本属性:src iframe页面地址,有同域跨域之分height iframe高度width iframe宽度name iframe命名,可通过window.frames[xxx]被调用scrolling iframe滚动模式sandbox html5新特性,用于限制iframe的功能我们可以通过contentWindow和contentDocument两个API获取iframe的window对象和document对象。
iframe缺点:产生很多页面,不容易管理
iframe框架页面会增加服务器的http请求代码复杂,不利于SEO浏览器的后退按钮无效17. Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
告诉浏览器以何种规范解析文档严格模式:又称标准模式,是指浏览器按照 W3C 标准解析代码。混杂模式:又称怪异模式或兼容模式,是指浏览器用自己的方式解析代码没有正确声明DTD或者加入xml声明将触发混杂模式18. Cookie如何防范XSS攻击
XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。设置了HttpOnly属性的cookie变量无法被js获取,可以避免此种攻击
20、
RESTful是一种架构风格、设计风格,基于RESTful的web系统更有层次、简便、轻量级以及通过HTTP直接传输,RESTful web服务成为替代SOAP服务的一个更有前途的替代方案。 26、iframe通信,同源和不同源两种情况同域:即父子页面相互调用一、父页面调用子页面1、先得到子页面的documentdocument.getElementById('FrameId').contentWindow.document2、得到子页面的windowdocument.getElementById('FrameId').contentWindow.window重载子页面:document.getElementById('FrameId').contentWindow.window.location.reload(true);或者 $('#FrameId').attr('src','../list');3、得到子页面的的变量doucment. iframe的name属性值 . 子页面变量名称 (document.frameName.temp)二、子页面调用父页面1、父页面document : window.parent.document2、获得父页面变量 : parent.变量名称3、调用事件 : window.parent.XXX();跨域:
主域:由两个或两个以上的字母构成,中间由点号隔开,整个域名只有1个点号csdn.net子域:是在主域名之下的域名,域名内容会有多个点号未跨主域,跨子域
两个域的js文件中设置document.domain=主域名 即可跨主域
location.hash(B操作A)1、动态改变location.hash,iframe不会重载2、无论跨域与否,iframe内可以获取自己的location.hash3、只要域名相同就能通信,即使ABC三层嵌套
27、介绍知道的http返回的状态码
2开头的http状态码表示请求成功200 成功处理了请求,一般情况下都是返回此状态码;3xx (重定向)
重定向代码,也是常见的代码301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。4开头的http状态码表示请求出错
400 服务器不理解请求的语法。 401 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。 403 服务器拒绝请求。 404 服务器找不到请求的网页。 5开头状态码并不常见,但是我们应该知道500 (服务器内部错误) 服务器遇到错误,无法完成请求。28、http常用请求头
Cache-Control 设置请求响应链上所有的缓存机制必须遵守的指令Connection 设置当前连接和hop-by-hop协议请求字段列表的控制选项Content-Type 设置请求体的MIME类型(适用POST和PUT请求)If-Modified-Since 设置更新时间,从更新时间到服务端接受请求这段时间内如果资源没有改变,允许服务端返回304 Not Modifiedcookieuser-agent:用户浏览器信息29、常用响应头Cache-Control 告诉服务端到客户端所有的缓存机制是否可以缓存这个对象,单位是秒Content-Type 设置响应体的MIME类型Expires 设置响应体的过期时间Status 设置HTTP响应状态注意:头文件分为
general-header ;general header是request、response都可用的, 但是不能用于entity.其包含的字段有:Request URL :请求的url Request Method : 请求的方法,可以是GET、POST Status Code:HTTP 状态码,表示请求成功 Remote Address:远程IP地址 request-header ;请求头cookieuser-agent:用户浏览器信息connection:是否建立持久连接,http1.1中默认keep-alive建立持久连接Cache-Control:缓存相关,建立请求和响应所遵循的缓存的机制、Content-Type:请求体的MIME类型 (用于POST和PUT请求中)If-Modified-Since:缓存相关:如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码Accept:客户端需要接收的mime类型response-header ;响应头Last-Modified:缓存相关,返回资源最近一次修改的日期Expires:缓存相关,响应过期的日期和时间ETag:请求变量的实体标签的当前值Content-Type:响应的mime类型Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型
29、强,协商缓存浏览器缓存主要分为强缓存(也称本地缓存)和协商缓存(也称弱缓存)强缓存是利用请求头中的Expires和Cache-Control两个字段来控制的,用来表示资源的缓存时间。强缓存中,普通刷新会忽略它,但不会清除它,需要强制刷新。浏览器强制刷新,请求会带上Cache-Control:no-cache和Pragma:no-cacheCache-Control:no-cache:不使用本地缓存。需要使用缓存协商,先与服务器确认返回的响应是否被更改,如果之前的响应中存在ETag,那么请求的时候会与服务端验证,如果资源未被更改,则可以避免重新下载
协商缓存就是由服务器来确定缓存资源是否可用,所以客户端与服务器端要
通过某种标识来进行通信,从而让服务器判断请求资源是否可以缓存访问。普通刷新会启用弱缓存,忽略强缓存。只有在地址栏或收藏夹输入网址、通过链接引用资源等情况下,浏览器才会启用强缓存,这也是为什么有时候我们更新一张图片、一个js文件,页面内容依然是旧的,但是直接浏览器访问那个图片或文件,看到的内容却是新的。31、讲讲304
304状态码或许不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。32、强缓存、协商缓存什么时候用哪个 33、前端优化1)减少http请求,使用精灵图2)使用CDN:如果应用程序web服务器离用户更近,那么一个HTTP请求的响应时间将缩短。另一方面,如果组件web服务器离用户更近,则多个HTTP请求的响应时间将缩短。 CDN(内容发布网络)是一组分布在多个不同地理位置的Web服务器, 用于更加有效地向用户发布内容。在优化性能时,向特定用户发布内容的服务 器的选择基于对网络慕课拥堵的测量。例如,CDN可能选择网络阶跃数最小的服务器 ,或者具有最短响应时间的服务器。 3)使用浏览器缓存 4)压缩组件 在一般的网站中,静态资源使用频率高,流量占用大。对于访问量稍大的网站,都会把静态资源放置到 CDN 服务器,不占用业务服务器的网络带宽,而达到更好的用户体验 34、GET和POST的区别1)get的请求数据拼接在url内,post的请求数据在请求体内2)get请求只能进行url编码,而post支持多种编码方式3)GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。35、301和302的区别
301是永久重定向。302时暂时重定向36、HTTP支持的方法:get/post
43、常见的HTTP的头部52、描述一下XSS和CRSF攻击?防御方法?54、具体有哪些请求头是跟缓存相关的
Cache-control if-Modified-Since 响应头: 56、cookie有哪些字段可以设置57、cookie有哪些编码方式?
url编码68、浏览器缓存机制
浏览器请求某一资源时,会先获取该资源缓存的header信息,然后根据header中的Cache-Control和Expires来判断是否过期。若没过期则直接从缓存中获取资源信息,包括缓存的header的信息,所以此次请求不会与服务器进行通信。这里判断是否过期,则是强缓存相关。后面会讲Cache-Control和Expires相关。如果显示已过期,浏览器会向服务器端发送请求,这个请求会携带第一次请求返回的有
关缓存的header字段信息,比如客户端会通过If-None-Match头将先前服务器端发送过来的Etag发送给服务器,服务会对比这个客户端发过来的Etag是否与服务器的相同,若相同,就将If-None-Match的值设为false,返回状态304,客户端继续使用本地缓存,不解析服务器端发回来的数据,若不相同就将If-None-Match的值设为true,返回状态为200,客户重新机械服务器端返回的数据;客户端还会通过If-Modified-Since头将先前服务器端发过来的最后修改时间戳发送给服务器,服务器端通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回最新的内容,如果是最新的,则返回304,客户端继续使用本地缓存。69、TCP四次挥手
1)客户端发送关闭请求,不再向服务端发送请求2)第二次挥手,服务端已经接收到了客户端的关闭请求,此时还可以继续向客户端发送信息3)所有数据发送完毕后,服务端通知客户端可以关闭4)客户端收到可以关闭的通知,通知服务端可以关闭,服务端收到关闭允许后立刻关闭。客户端设置定时器,到时间自动关闭70、为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。71、描述一下XSS和CRSF攻击?防御方法?XSS跨站脚本攻击,发生在客户端,浏览器在解析渲染DOM时执行了意外的JS脚本。XSS漏洞主要是没有处理好用户的输入而产生的。为了防范XSS的攻击,必须为输入添加验有效的验证,为cookie设置httpOnlyCSRF跨站请求伪造:
最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。72、fetch1)fetch内部使用promise封装的2)fetch()返回的promise将不会拒绝http的错误状态,即使响应是一个HTTP 404或者5003)在默认情况下 fetch不会接受或者发送cookies如果想要在同域中自动发送cookie,加上 credentials 的 same-origin 选项73、cookie:其实cookie是一个很小的文本文件,
是浏览器储存在用户的机器上的。Cookie是纯文本,没有可执行代码。储存一些服务器需要的信息,每次请求站点,会发送相应的cookie,这些cookie可以用来辨别用户身份信息等作用。通过docuemnt.cookie可以设置和获取Cookie的值请求行:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。③是协议名称及版本号。75、token
防止表单重复提交,进行身份验证76、fetch发送两次请求?
原因很简单 因为你用的fetch post修改了请求头,导致fetch第一发送一个options请求,询问服务器是否支持修改的请求头,如过服务器支持,那么将会再次发送真正的请求。77、session/sessionStorage
是不一样的两个东西78、session/cookie的区别
Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之
间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。1)cookie保存在浏览器端,session保存在服务器端2)有1)知session比cookie更安全3)cookie有大小限制,session没有4)存储内容:cookie只能保存字符串类型,以文本的方式;session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)79、计算机网络分为哪几层?
TCP/IP :链路、网络、传输、应用链路:以二进制的形式在物理层面上传输数据,传输有地址的帧以及错误检测功能网络:为数据包选择路由传输:提供端对端的接口应用:数据格式化,代码转换,数据加密,实现文件传输,文件服务等功能
80、什么场景使用TCP/UDP?那些应用层使用了UDP?
应用场景#TCP应用场景当对网络通信质量有要求时,比如:整个数据要准确无误的传递给对方,这往往对于一些要求可靠的应用,比如HTTP,HTTPS,FTP等传输文件的协议,POP,SMTP等邮件的传输协议。常见使用TCP协议的应用: 1.浏览器使用的:HTTP 2.FlashFXP:FTP 3.Outlook:POP,SMTP 4.QQ文件传输UDP 文件传输协议
对当前网络通讯质量要求不高的时候,要求网络通讯速度尽量的快,这时就使用UDP 日常生活中常见使用UDP协议: 1.QQ语音 2.QQ视频 3.TFTP
81、DNS
即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,
而不用去记住能够被机器直接读取的IP数串。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)