一、XMLHttpRequest
XMLHttpRequest(XHR)是浏览器层面的API,可以让开发人员通过JavaScript实现数据传输。XHR是在Internet Explorer 5 中首次亮相的,后来成为AJAX(Asynchronous JavaScript and XML)革命核心技术,我今天几乎所有Web应用必不可少的基本构件。
XHR诞生以前,网页要获取客户端和服务器的任何状态更新,都需要刷新一次。有了XHR,这个过程就可以异步实现,而且完全通过应用的JavaScript代码完成。
然而,XHR的能力不仅仅表现在能实现浏览器的异步通信,还表现在它极大的简化了这个异步通信过程。XHR是浏览器提供的API,这就意味着浏览器会自动帮我们完成所有底层的连接管理、协议协商、HTTP请求格式化等等很多工作。
二、跨域资源共享–CORS
XHR是一个浏览器层面的API,向我们隐藏了大量底层处理,包括缓存、重定向、内容协商、认证,等等。这样做有两个目的:
- XHR的API因此非常简单.
- 浏览器可以采用沙箱机制,对应用代码强制施加一套安全限制。
虽然XHR API允许应用添加自定义的HTTP首部(通过setRequestHeader()方法),同时也有一些首部是应用代码不能设定的:
Accept-Charset
Accept-Encoding
Access-Control
Host
Upgrade
Connection
Ref