http/https区别:
http:超文本传输协议。
https: 是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版
Https 协议需要 ca 证书,费用较高。
http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。
使用不同的链接方式,端口也不同,一般而言,http 协议的端口为 80,https 的端口为
443
tcp三次握手?
一次握手:客户端发送带有 SYN 标志的连接请求数据包给服务端
二次握手:服务端发送带有 SYN+ACK 标志的连接请求和应答数据包给客户端
三次握手:客户端发送带有 ACK 标志的应答数据包给服务端(可以携带数据了)
tcp与udp的区别
- TCP 是面向连接的,UDP 是面向无连接的
- UDP程序结构较简单
- TCP 是面向字节流的,UDP 是基于数据报的
- TCP 保证数据正确性,UDP 可能丢包
- TCP 保证数据顺序,UDP 不保证
常见HTTP的状态码有哪些?
- 200 – 请求成功
- 301 – 资源(网页等)被永久转移到其它URL
- 404 – 请求的资源(网页等)不存在
- 500 – 内部服务器错误
分类 | 分类描述 |
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
状态码 | 状态码英文名称 | 中文描述 |
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的优缺点:
优点:
- 支持客户/服务器模式:
- 应用广泛且跨平台:
- 简单快速、灵活:
缺点:
- 无连接:
- 无状态:无状态可以减轻服务器负担,但进行关联操作时繁琐,Cookie正好可以解决这个问题
- 明文传输:调试便利的同时带来了信息易被窃取
- 不安全:(HTTPS通过引入SSL/TLS层,解决了这个隐患)
http请求的方式:
方法 | 描述 |
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
get/post的区别
get从服务器获取数据,post向服务器发送数据
get不安全,url可见 post相较于get安全性更高
get参数通过url传递,post放在request body中
get请求只进行url编码 post支持多种编码
get 请求参数会被完整保留在浏览历史记录里,而 post 中的参数不会被保留。
get传输的数据量小,因为受URL长度限制,但效率较高;
post可以传输大量数据,所以上传文件时只能用Post方式;
get产生一个tcp数据包 post产生两个tcp数据包
HTTP常见的字段有哪些?
URI&URL:
URI:统一资源标识符,不仅可以标识http,ftp等其他的网络资源
URL:统一资源定位符
请求头:
GET :获取一个资源,同时参数直接跟在URL后面,url长度受限制2048字节
POST:不仅可以获取资源,还可以提交资源(譬如上传文件),参数放在请求体中,包大小4G
HEAD:只要响应头,没有响应体,通常用于测试URL是否存在
DELETE:删除一个资源
PUT:通常修改一个资源
响应头:
Content-Length:响应体的长度
Server:服务器的信息
Content-Type:内容的类型,text/html,xml等
Last-Modified :最有的修改日期,通常跟缓存相关 20151108
Location: 新的地址
响应码:
200 OK 访问正常
206 跟断点续传相关
3XX 重定向:Location
304 缓存有效
307 临时重定向
4XX 客户端问题
401 代表没有权限访问
404 代表访问的资源不存在
5XX 通常服务器内部处理的问题
前端优化:
降低请求量:合并资源,减少 HTTP 请求数,minify / gzip 压缩,webP,lazyLoad。
加快请求速度:预解析 DNS,减少域名数,并行加载,CDN 分发。
缓存:HTTP 协议缓存请求,离线缓存 manifest,离线数据缓存 localStorage。
渲染:JS/CSS 优化,加载顺序,服务端渲染,pipeline。
html5新增元素
8 个语义元素 header section footer aside nav main article figure
内容元素 mark 高亮 progress 进度
新的表单控件 calander date time email url search
新的 input 类型 color date datetime datetime-local email
移除过时标签 big font frame frameset
canvas 绘图,支持内联 SVG。支持 MathML
多媒体 audio video source embed track
本地离线存储,把需要离线存储在本地的文件列在一个 manifest 配置文件
web 存储。localStorage、SessionStorage
画一个三角形
div { width:0px; height:0px; border-top:10px solid red; border-right:10px solid transparent; border-bottom:10px solid transparent; border-left:10px solid transparent; }
url从输入到渲染页面的全过程
- 浏览器构建HTTP Request请求, DNS解析URL地址、生成HTTP请求报文、构建TCP连接、使用IP协议选择传输路线
- 将请求通过网络传输到服务端 从客户机到服务器需要通过许多网络设备,一般包括集线器、交换器、路由器等
- 服务器构建HTTP Response响应,响应客户端的请求
- 将响应体的数据通过网络传输返回给客户端
- 浏览器渲染页面 解析HTML、CSS、JS,生成RenderTree渲染页面
简述回答:
DNS 解析
TCP 连接
发送 HTTP 请求
服务器处理请求并返回 HTTP 报文
浏览器解析渲染页面
连接结束
说一下浏览器缓存 机制
缓存分为两种:强缓存和协商缓存,根据响应的 header 内容来决定。
强缓存相关字段有 expires,cache-control。如果 cache-control 与 expires 同时存在的话,
cache-control 的优先级高于 expires。
协商缓存相关字段有 Last-Modified/If-Modified-Since,Etag/If-None-Match
cookie 和 session 的区别,localstorage 和 sessionstorage 的区别
Cookie 和 session 都可用来存储用户信息,
cookie 存放于客户端,
session 存放于服务器端,
cookie不安全,容易被窥探。session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险
三者区别
生命周期
cookie:可以自己设置失效时间,如果没有设置,则关闭后失效。
localStorage:除非手动清除,否则永久保存。
sessionStorage:浏览器关闭后就被清除了。
存储大小
cookie:存储量只有4k
sessionStorage和localStorage有5M
http请求
cookie:每次http请求都带着,影响性能。
sessionStorage和localStorage只在客户端存储,不参与服务端的通信。
易用性
cookie:api需要自己封装
sessionStorage和localStorage:api简单易用
csrf 和 xss 的网络攻击及防范
CSRF:跨站请求伪造(Cross Site Request Forgy)
CSRF 中文名为跨站请求伪造。原理就是攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求。
XSS一般是本网站了运行了其他网站的脚本,SCRF则是其他网站对本网站产生了影响(从其他网站对本网站发起请求)
防御:
- Get 请求不对数据进行修改
- 不让第三方网站访问到用户 Cookie
- 阻止第三方网站请求接口
- 请求时附带验证信息,比如验证码或者 Token
XSS:XSS 简单点来说,就是攻击者想尽一切办法将可以执行的代码注入到网页中。 XSS 可以分为多种类型,但是总体上我认为分为两类:持久型和非持久型。
非持久型:是指发生请求时,XSS代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应。响应结果中包含XSS代码,最后浏览器解析并执行
持久型:存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上XSS代码了。最典型的就是留言板XSS。
防御:转义字符与CSP