HTTP/HTML/浏览器

  说一下HTTP和HTTPSjavascript


 

HTTP的SSL加密是在传输层实现的php

(1)HTTP和HTTPS的基本概念html

  HTTP:超文本传输协议,是互联网上应用最普遍的一种网络协议,是一个客户端和服务器端请求和响应的标准(TCP),用于从www服务器传输超文本到本地浏览器的传输协议,它可使浏览器更加高效,使网络传输减小。前端

  HTTPS:是以安全为目的的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。java

  HTTPS的主要的做用就是创建一个信息安全通道,来确保数组的传输,确保网站的真是性。web

(2)HTTP和HTTPS的区别json

  HTTP擦混输数据都是未加密的,也就是明文,HTTPS是由HTTP和SSL协议构建的可进行加密传输和身份认证的网络协议,比HTTP协议安全性更高api

  主要区别:数组

  HTTPS协议须要ca证书,费用很高。浏览器

  HTTP是超文本传输协议,信息是明文,而HTTPS是具备安全性的SSL加密传输协议。

  端口号不一样,HTTP的默认端口号是80,而HTTPS的默认端口号是443.

  HTTP链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输身份认证的网络协议,比HTTP的协议安全。

  TCp三次握手,一句话概述


 

客户端和服务器端都要直到本身可收发,所以须要三次握手

  TCP和UDP的区别


 

(1)TCP是面向链接的,udp是无链接的即发送数据前不须要先创建连接。

(2)TCP提供可靠的服务。也就是说,经过TCP链接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。 而且由于tcp可靠,面向链接,不会丢失数据所以适合大数据量的交换。

(3)TCP是面向字节流,UDP面向报文,而且网络出现拥塞不会使得发送速率下降(所以会出现丢包,对实时的应用好比IP电话和视频会议等)。

(4)TCP只能是1对1的,UDP支持1对1,1对多。

(5)TCP的首部较大为20字节,而UDP只有8字节。

(6)TCP是面向链接的可靠性传输,而UDP是不可靠的。

  WebSocket的实现和应用


 

WebSocket是HTML5中的协议,支持持久连续,http协议不支持持久性链接。Http1.0和HTTP1.1都不支持持久性的连接,HTTP1.1中的keep-alive,将多个http请求合并为1个

  Http请求方式,head方式


 

head:相似于get请求,只不过返回的响应中没有具体的内容,用户获取报头
options:容许客户端查看服务器的性能,好比说服务器支持的请求方式等等。
   说一下Web Quality(无障碍)
可以被残障人士使用的网站才能称得上一个易用的(易访问的)网站。

使用alt属性:

  <img src="person.jpg"  alt="this is a person"/>

有时候浏览器会没法显示图像。具体的缘由有:

  用户关闭了图像显示

  浏览器是不支持图形显示的迷你浏览器

  浏览器是语音浏览器(供盲人和弱视人群使用)
  若是您使用了alt 属性,那么浏览器至少能够显示或读出有关图像的描述。

  几个很实用的BOM属性对象方法


 

  什么是BOM?BOM是浏览器对象。

  建立的BOM的属性:

(1)location对象

location.href-- 返回或设置当前文档的URL
location.search -- 返回URL中的查询字符串部分。如 http://www.dreamdu.com/dreamdu.php?id=5&name=dreamdu 返回包括(?)后面的内容?id=5&name=dreamdu
location.hash -- 返回URL#后面的内容,若是没有#,返回空
location.host -- 返回URL中的域名部分,例如www.dreamdu.com
location.hostname -- 返回URL中的主域名部分,例如dreamdu.com
location.pathname -- 返回URL的域名后的部分。例如 http://www.dreamdu.com/xhtml/ 回/xhtml/
location.port -- 返回URL中的端口部分。例如 http://www.dreamdu.com:8080/xhtml/ 返回8080
location.protocol -- 返回URL中的协议部分。例如 http://www.dreamdu.com:8080/xhtml/ 返回(//)前面的内容http:
location.assign -- 设置当前文档的URL
location.replace() -- 设置当前文档的URL,而且在history对象的地址列表中移除这个URL location.replace(url);
location.reload() -- 重载当前页面

(2)history对象

history.go() -- 前进或后退指定的页面数 history.go(num);
history.back() -- 后退一页
history.forward() -- 前进一页

(3)Navigator对象

navigator.userAgent -- 返回用户代理头的字符串表示(就是包括浏览器版本信息等的字符串)
navigator.cookieEnabled -- 返回浏览器是否支持(启用)cookie

  说一下HTML5 drag api


 

dragstart:事件主体是被拖放元素,在开始拖放被拖放元素时触发,。

darg:事件主体是被拖放元素,在正在拖放被拖放元素时触发。

dragenter:事件主体是目标元素,在被拖放元素进入某元素时触发。

dragover:事件主体是目标元素,在被拖放在某元素内移动时触发。

dragleave:事件主体是目标元素,在被拖放元素移出目标元素是触发。

drop:事件主体是目标元素,在目标元素彻底接受被拖放元素时触发。

dragend:事件主体是被拖放元素,在整个拖放操做结束时触发

  说一下HTTP2.0


 

提高访问速度(能够对于,请求资源所需时间更少,访问速度更快,相比http1.0)

容许多路复用:多路复用容许同时经过单一的HTTP/2链接发送多重请求-响应信息。改善了:在http1.1中,浏览器客户端在同一时间,针对同一域名下的请求有必定数量限制(链接数量),超过限制会被阻塞。

二进制分帧:HTTP2.0会将全部的传输信息分割为更小的信息或者帧,并对他们进行二进制编码

首部压缩

服务器端推送

  补充400和40一、403状态码


 

(1)400状态码:请求无效

产生缘由:

前端提交数据的字段名称和字段类型与后台的实体没有保持一致

前端提交到后台的数据应该是json字符串类型,可是前端没有将对象JSON.stringify转化成字符串。

解决方法:

对照字段的名称,保持一致性

将obj对象经过JSON.stringify实现序列化

(2)401状态码:当前请求须要用户验证

(3)403状态码:服务器已经获得请求,可是拒绝执行

  Cookie、sessionStorage、localStorage的区别


 

共同点:都是保存在浏览器端,而且是同源的
  Cookie:cookie数据始终在同源的http请求中携带(即便不须要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,能够限制cookie只属于某个路径下,存储的大小很小只有4K左右。 (key:能够在浏览器和服务器端来回传递, 存储容量小,只有大约4K左右
  sessionStorage:仅在当前 浏览器窗口关闭前有效,天然也就不可能持久保持,    
  localStorage:始终有效,窗口或浏览器关闭也一直保存,所以用做持久数据;cookie只在设置的cookie过时时间以前一直有效,即便窗口或浏览器关闭。(key:自己就是一个回话过程,关闭浏览器后消失,session为一个回话,当页面不一样即便是同一页面打开两次,也被视为同一次回话)
  localStorage:localStorage 在全部同源窗口中都是共享的;cookie也是在全部同源窗口中都是共享的。(key:同源窗口都会共享,而且 不会失效,无论窗口或者浏览器关闭与否都会始终生效)
  对HTML的语义化的理解
HTML5语义化标签是指正确的标签包含了正确的内容,结构良好,便于阅读,好比nav表示导航条,相似的还有article、header、footer等等标签。
  Doctype做用?严格模式与混杂模式如何区分?它们有何意义?
Doctype声明于文档最前面,告诉浏览器以何种方式来渲染页面,这里有两种模式,严格模式和混杂模式。

严格模式的排版和JS 运做模式是 以该浏览器支持的最高标准运行。

混杂模式,向后兼容,模拟老式浏览器,防止浏览器没法兼容页面。

  Cookie如何防范XSS攻击


 

XSS(跨站脚本攻击)是指攻击者在返回的HTML中嵌入javascript脚本,为了减轻这些攻击,须要在HTTP头部配上,set-cookie:

httponly-这个属性能够防止XSS,它会禁止javascript脚原本访问cookie。

  Cookie和session的区别


 

cookie保存在客户端,而session保存在服务端

cookie不是很安全,别人能够分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

session会在必定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie。

  介绍知道的http返回的状态码


 

100    Continue    继续。客户端应继续其请求

101    Switching Protocols    切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

200    OK    请求成功。通常用于GET与POST请求

201    Created    已建立。成功请求并建立了新的资源

202    Accepted    已接受。已经接受请求,但未处理完成

203    Non-Authoritative Information    非受权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204    No Content    无内容。服务器成功处理,但未返回内容。在未更新网页的状况下,可确保浏览器继续显示当前文档

205    Reset Content    重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可经过此返回码清除浏览器的表单域

206    Partial Content    部份内容。服务器成功处理了部分GET请求

300    Multiple Choices    多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301    Moved Permanently    永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。从此任何新的请求都应使用新的URI代替

302    Found    临时移动。与301相似。但资源只是临时被移动。客户端应继续使用原有URI

303    See Other    查看其它地址。与301相似。使用GET和POST请求查看

304    Not Modified    未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端一般会缓存访问过的资源,经过提供一个头信息指出客户端但愿只返回在指定日期以后修改的资源

305    Use Proxy    使用代理。所请求的资源必须经过代理访问

306    Unused    已经被废弃的HTTP状态码

307    Temporary Redirect    临时重定向。与302相似。使用GET请求重定向

400    Bad Request    客户端请求的语法错误,服务器没法理解

401    Unauthorized    请求要求用户的身份认证

402    Payment Required    保留,未来使用

403    Forbidden    服务器理解请求客户端的请求,可是拒绝执行此请求

404    Not Found    服务器没法根据客户端的请求找到资源(网页)。经过此代码,网站设计人员可设置"您所请求的资源没法找到"的个性页面

405    Method Not Allowed    客户端请求中的方法被禁止

406    Not Acceptable    服务器没法根据客户端请求的内容特性完成请求

407    Proxy Authentication Required    请求要求代理的身份认证,与401相似,但请求者应当使用代理进行受权

408    Request Time-out    服务器等待客户端发送的请求时间过长,超时

409    Conflict    服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突

410    Gone    客户端请求的资源已经不存在。410不一样于404,若是资源之前有如今被永久删除了可以使用410代码,网站设计人员可经过301代码指定资源的新位置

411    Length Required    服务器没法处理客户端发送的不带Content-Length的请求信息

412    Precondition Failed    客户端请求信息的先决条件错误

413    Request Entity Too Large    因为请求的实体过大,服务器没法处理,所以拒绝请求。为防止客户端的连续请求,服务器可能会关闭链接。若是只是服务器暂时没法处理,则会包含一个Retry-After的响应信息

414    Request-URI Too Large    请求的URI过长(URI一般为网址),服务器没法处理

415    Unsupported Media Type    服务器没法处理请求附带的媒体格式

416    Requested range not satisfiable    客户端请求的范围无效

417    Expectation Failed    服务器没法知足Expect的请求头信息

500    Internal Server Error    服务器内部错误,没法完成请求

501    Not Implemented    服务器不支持请求的功能,没法完成请求

502    Bad Gateway    做为网关或者代理工做的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503    Service Unavailable    因为超载或系统维护,服务器暂时的没法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504    Gateway Time-out    充当网关或代理的服务器,未及时从远端服务器获取请求

505    HTTP Version not supported    服务器不支持请求的HTTP协议的版本,没法完成处理

  前端的优化


 

下降请求量:合并资源,减小HTTP 请求数,minify / gzip 压缩,webP,lazyLoad。

加快请求速度:预解析DNS,减小域名数,并行加载,CDN 分发。

缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存localStorage。

渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline。

  GET和POst的区别


 

get参数经过url传递,post放在request body中。

get请求在url中传递的参数是有长度限制的,而post没有。

get比post更不安全,由于参数直接暴露在url中,因此不能用来传递敏感信息。

get请求只能进行url编码,而post支持多种编码方式

get请求会浏览器主动cache,而post支持多种编码方式。

get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。

GET和POST本质上就是TCP连接,并没有差异。可是因为HTTP的规定和浏览器/服务器的限制,致使他们在应用过程当中体现出一些不一样。

GET产生一个TCP数据包;POST产生两个TCP数据包。

  301和302的区别


 

  HTTP支持的方法


 

GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT

  状态码304和 200


 

  浏览器在生成页面的时候,会生成那两颗树?


 

构造两棵树,DOM树和CSSOM规则树

当浏览器接收到服务器相应来的HTML文档后,会遍历文档节点,生成DOM树,

CSSOM规则树由浏览器解析CSS文件生成

  **输入URL到页面加载显示完成发生了什么?**


 

DNS解析

TCP链接

发送HTTP请求

服务器处理请求并返回HTTP报文

浏览器解析渲染页面

链接结束

  浏览器缓存机制


 

缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。

强缓存相关字段有expires,cache-control。若是cache-control与expires同时存在的话,cache-control的优先级高于expires。

协商缓存相关字段有Last-Modified/If-Modified-Since,Etag/If-None-Match

相关文章
相关标签/搜索