第四期
HTTP的请求方法OPTIONS能干什么?
OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。
简而言之,就是预检,获取服务器支持的HTTP请求方法;
经常在跨域访问的时候出现,用来检查服务器的性能,用以判断实际发送的请求是否安全。
前端鉴权是怎么实现的?
Token验证,目前是最流行的一种鉴权方式,他的大致流程:
- 客户端使用用户名跟密码请求登录
- 服务端收到请求,去验证用户名与密码
- 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
- 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
- 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
- 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。
session-cookie
首次访问,服务端会生成session来返回客户端,客户端用cookie保存,浏览器会在下次访问的时候带上seesion。
OAuth(开放授权)
利用第三方登录,比如微信、QQ等等,对用户来说,减轻了用来记忆账号密码的复杂性,对产品来说,提高了用户的体验度,而且还能获得更多用户。
HTTP Basic Authentication
这种方式很少见,但举个简单的例子,你就可能会明白,当我们在浏览器首次登录的时候,浏览器会弹出一个窗口来确定是否保存账号和密码。
认证过程:- 客户端向服务器请求数据,请求的内容可能是一个网页或者是一个ajax异步请求;
- 服务器向客户端发送验证请求代码401;
- 当符合http1.0或1.1规范的客户端(如IE,FIREFOX)收到401返回值时,将自动弹出一个登录窗口,要求用户输入用户名和密码。
- 用户输入用户名和密码后,将用户名及密码以BASE64加密方式加密,并将密文放入前一条请求信息中。
- 服务器收到上述请求信息后,将Authorization字段后的用户信息取出、解密,将解密后的用户名及密码与用户数据库进行比较验证,如用户名及密码正确,服务器则根据请求,将所请求资源发送给客户端。
BloB对象是什么?常用在什么地方?
Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
Blob一般用于存储文件,视频、音频等大文件之类的操作都会用到Blob;无论是分片上传或是下载大文件,都可以使用blob对象来优化。
Blob 存储用于:
直接向浏览器提供图像或文档。
存储文件以供分布式访问。
对视频和音频进行流式处理。
向日志文件进行写入。
存储用于备份和还原、灾难恢复及存档的数据。
存储数据以供本地或 Azure 托管服务执行分析
前端劝退师,公众号:前端劝退师 「全栈之路」Web前端开发的后端指南
用vue脚手架搭建的后台管理系统中,权限验证的方式总共有几种?逻辑是什么?
一般情况权限管理的控制有两种方式,一种是服务端传权限标识,比如我要在页面显示哪些路由,隐藏那些。一般情况下我们会在meta中设置路由标识,然后在路由拦截中动态生成可显示的路由表。另一种情况就是服务端返回路由表;路由表是由服务端控制。
Ajax编程步骤和 XMLHttpRequest 对象有哪些属性?
编程步骤:
创建XMLHttpRequest对象;
//第一步:创建XMLHttpRequest对象 var xmlHttp; if (window.XMLHttpRequest) { //非IE xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") }
设置请求方式
//第二步:设置和服务器端交互的相应参数,向路径http://localhost:8080/JsLearning3/getAjax准备发送数据 var url = "http://localhost:8080/JsLearning3/getAjax"; xmlHttp.open("POST", url, true);
调用回调函数
//第三步:注册回调函数 xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { var obj = document.getElementById(id); obj.innerHTML = xmlHttp.responseText; } else { alert("AJAX服务器返回错误!"); } } }
发送请求
//第四步:设置发送请求的内容和发送报送。然后发送请求 var params = "userName=" + document.getElementsByName("userName")[0].value + "&userPass=" + document.getElementsByName("userPass")[0].value + "&time=" + Math.random(); // 增加time随机参数,防止读取缓存 xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); // 向请求添加 HTTP 头,POST如果有数据一定加加!!!! xmlHttp.send(params);
readyState表示AJAX状态值;值为4时,表示响应内容解析完成,可以在客户端调用了。 status表示AJAX的状态码;值为200的时候,表示服务器返回成功。
XMLHttpRequest 对象:
除了上述的状态值和状态码,其他的属性还有:
responseText
:服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。如果 readyState 为 4,这个属性保存了完整的响应体。
responseXML
:对请求的响应,解析为 XML 并作为 Document 对象返回。
事件有:
onreadystatechange
:readyState 属性改变的时候调用的事件。
方法有:
abort()
:取消当前响应,关闭连接并且结束任何未决的网络活动。
getAllResponseHeaders():把 HTTP 响应头部作为未解析的字符串返回。
getResponseHeader():返回指定的 HTTP 响应头部的值。其参数是要返回的 HTTP 响应头部的名称。可以使用任何大小写来制定这个头部名字,和响应头部的比较是不区分大小写的。
open()
:初始化 HTTP 请求参数,例如 URL 和 HTTP 方法,但是并不发送请求。
send()
:发送 HTTP 请求,使用传递给 open() 方法的参数,以及传递给该方法的可选请求体。
setRequestHeader()
:向一个打开但未发送的请求设置或添加一个 HTTP 请求。