1、什么是HTTP
协议?
HTTP
协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。 HTTP
是一种无状态 (stateless) 协议, HTTP
协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。
2、HTTP请求包含那几部分?
http请求由请求行,消息报头,请求正文三部分构成。
HTTP请求行:请求行由请求Method
, URL
字段和HTTP Version
三部分构成, 总的来说请求行就是定义了本次请求的请求方式, 请求的地址, 以及所遵循的HTTP协议
HTTP请求头:消息报头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息。
请求正文:HTTP URL
包含了用于查找某个资源的详细信息, 格式:http://host[":"port][abs_path]?参数1=值1&参数2=值2
3、HTTP协议的方法有哪些?
GET
: 请求获取Request-URI所标识的资源
POST
: 在Request-URI所标识的资源后增加新的数据
HEAD
: 请求获取由Request-URI所标识的资源的响应消息报头
PUT
: 请求服务器存储或修改一个资源,并用Request-URI作为其标识
DELETE
: 请求服务器删除Request-URI所标识的资源
TRACE
: 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT
: 保留将来使用
OPTIONS
: 请求查询服务器的性能,或者查询与资源相关的选项和需求
4、HTTP响应状态码有哪些?
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
-
1xx
:指示信息 - 表示请求已接收,继续处理 -
2xx
:成功 - 表示请求已被成功接收、理解、接受 -
3xx
:重定向 - 要完成请求必须进行更进一步的操作 -
4xx
:客户端错误 - 请求有语法错误或请求无法实现 * -
5xx
:服务器端错误 - 服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200
: OK - 客户端请求成功
400
: Bad Request - 客户端请求有语法错误,不能被服务器所理解
401
: Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate
报头域一起使用
403
: Forbidden - 服务器收到请求,但是拒绝提供服务
404
: Not Found - 请求资源不存在,eg:输入了错误的URL
500
: Internal Server Error - 服务器发生不可预期的错误
503
: Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后,可能恢复正常
5、HTTP的五大特点是什么?
-
支持客户/服务器模式。
-
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有
GET
、HEAD
、POST
。每种方法规定了客户与服务器联系的类型不同。由于HTTP
协议简单,使得HTTP
服务器的程序规模小,因而通信速度很快。 -
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由
Content-Type
加以标记。 -
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。早期这么做的原因是请求资源少,追求快。后来通过
Connection: Keep-Alive
实现长连接 -
无状态:
HTTP
协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
6、什么是HTTPS?
HTTP
协议中没有加密机制,但可以通 过和 SSL
(Secure Socket Layer, 安全套接层 )或 TLS
(Transport Layer Security, 安全层传输协议)的组合使用,加密 HTTP
的通信内容。属于通信加密,即在整个通信线路中加密。 HTTP + 加密 + 认证 + 完整性保护 = HTTPS。
HTTPS
采用共享密钥加密(对称)和公开密钥加密(非对称)两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥加密来通信。但是公开密钥加密与共享密钥加密相比,其处理速度要慢。
7、什么是正则表达式?
正则表达式(Regular Expression)其实就是一门工具,目的是为了字符串模式匹配,从而实现搜索和替换功能。它起源于上个20世纪50年代科学家在数学领域做的一些研究工作,后来才被引入到计算机领域中。从它的命名我们可以知道,它是一种用来描述规则的表达式。
8、正则对象中的两个方法是什么?有什么作用?
-
test():
test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
-
exec()
exec() 方法用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
9、什么是JSON?有什么优点?
JSON 全称为 JavaScript Object Notation,是一种轻量级的数据交换格式。它是 JavaScript 中用于描述对象数据的语法的扩展。不过并不限于与 JavaScript 一起使用。它采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于阅读和编写,同时也易于机器解析和生成。所有现代编程语言都支持这些数据结构,使 JSON 完全独立于语言。
优点:
- 紧凑、高效的格式:JSON 语法提供了简单的数据解析和更快的实现;
- 易于阅读:人类和计算机都可以快速解释语法且错误最少;
- 广泛支持:大多数语言、操作系统和浏览器都可以使用开箱即用的 JSON,这允许使用 JSON 而不存在兼容性问题;
- 自我描述:很容易区分数据类型,并且更容易解释数据,而无需提前知道会发生什么;
- 格式灵活:JSON支持多种数据类型,可以组合起来表达大多数数据的结构。
10、JSON 序列化与反序列化指的是什么?如何实现的?
JSON 提供了两种方法:
-
JSON.parse()
:将数据转换为 JavaScript 对象。把字符串转换为数据对象过程,叫做反序列化 -
JSON.stringify()
:将 JavaScript 对象转换为字符串;把数据转换为字符串的过程,叫序列化
11、什么是同步?什么是异步?异步请求的好处?
同步(Synchronous):所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。
异步(Asynchronous):异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调来通知调用者。对于异步调用,调用的返回并不受调用者控制。
异步请求的好处:
1、可以同时请求加载数据,提升用户体验
2、避免整个页面刷新,实现(局部)无刷新效果
12、什么是AJAX?
Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest 、使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。XMLHttpRequest
(XHR)对象用于与服务器交互。
通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest
在 AJAX 编程中被大量使用。
核心对象:XMLHttpRequest ,用来实现异步数据请求(传输),实现无刷新效果(局部刷新),用户体验感更好。
AJAX(Asynchronous JavaScript And XML )是一种使用 XMLHttpRequest 技术构建更复杂,动态的网页的编程实践。