http/html/浏览器面试题

文章详细介绍了HTTP和HTTPS协议的区别,包括安全性和端口使用。同时,它探讨了TCP的三次握手过程以及TCP与UDP的差异。文章还列举了常见的HTTP状态码及其含义,并讨论了HTTP请求方法如GET和POST的区别。此外,内容还涉及了前端优化策略,HTML5的新特性,浏览器缓存机制,以及网络攻击如CSRF和XSS的防范措施。
摘要由CSDN通过智能技术生成

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则是其他网站对本网站产生了影响(从其他网站对本网站发起请求)

防御:

  1. Get 请求不对数据进行修改
  2. 不让第三方网站访问到用户 Cookie
  3. 阻止第三方网站请求接口
  4. 请求时附带验证信息,比如验证码或者 Token

XSS:XSS 简单点来说,就是攻击者想尽一切办法将可以执行的代码注入到网页中。 XSS 可以分为多种类型,但是总体上我认为分为两类:持久型和非持久型。

非持久型:是指发生请求时,XSS代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应。响应结果中包含XSS代码,最后浏览器解析并执行

持久型:存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上XSS代码了。最典型的就是留言板XSS。

防御:转义字符与CSP

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值