一、手写一个ajax
1 | // ajax发送请求的简单写法 |
promise ajax的写法
1 | // promise ajax写法 |
二、跨域
1. 同源
协议、域名、端口必须一致,叫做同源
同源策略:ajax请求时,浏览器要求当前网页和服务器端必须同源
2. img、link、script 可以无视同源策略,即可以跨域
由于img可以无视同源策略,所以可以用于使用第三方统计服务,如打点
link script 可使用cdn,cdn一般是外域服
script可以实现jsonp
3. 如何用jsonp实现跨域?
上面说了script可以实现jsonp。
现在假设我需要在http://localhost:8081下访问http://localhost:8082的文件,由于端口不一致所以跨域了。
(1)首先,需要服务器进行配合。因为服务器可以拼接任意字段返回给服务器,所以让服务器将数据包装为js函数返回。
假设服务器给前端的数据为http://localhost:8082/index.js,该文件的内容让后端包装为callback方法,参数为真实要传递的数据,如:
1 | callback({ |
(2)然后,前端使用script标签引入该index文件
1 | <script src = "http://localhost:8082/index.js"></script> |
这样,在页面中就引入了一个名为callback的函数,因为是script全局引入,所以该方法位于window下。
(3)再使用另一个script标签,处理数据:
1 | window.callback = function(data){ |
4. cors实现跨域
CORS 是纯服务器端操作,服务器端可以设置header根据下面方法设置响应头字段
服务器端可以直接设置header,去允许某个地址的跨域访问。
5. 常用的ajax插件
fetch() axios