ajax 是什么?同步和异步的区别?如何解决跨域问题?
一、ajax 是一种技术方案,依赖浏览器提供的 XMLHttpRequest 对象发出 HTTP 请求和接收 HTTP 响应;实现了在页面不刷新的情况下和服务器进行数据交互。
二、同步是阻塞模式,异步是非阻塞模式
同步:提交请求 >> 等待服务器处理 >> 处理完毕返回,这个期间浏览器不能干任何事。
异步:请求通过事件触发 >> 服务器处理(这时浏览器仍然可以运作其它事情) >> 处理完毕
三、跨域问题的产生是由于同源策略的限制(协议、域名、端口 三者必须相同,有一个不同就会产生跨域问题)
-
通过 jsonp 解决跨域问题
原理:使用 script 标签的 src 属性发送 HTTP 请求(只支持get)
优点:兼容性好,在很古老的浏览器中也可以用,简单易用,支持浏览器与服务器双向通信。
缺点:只支持GET请求,且只支持跨域HTTP请求这种情况(不支持HTTPS)
-
document.domain + iframe跨域
此方案仅限主域相同,子域不同的跨域应用场景
-
CORS
CORS 需要浏览器和后端同时支持;浏览器会自动进行 CORS 通信,实现 CORS 通信的关键是后端。只要后端实现了 CORS,就实现了跨域。服务端设置 Access-Control-Allow-Origin 就可以开启 CORS。 该属性表示哪些域名可以访问资源,如果设置通配符*则表示所有网站都可以访问资源。
-
nginx 反向代理