[面试专题]跨域解决方案

跨域产生

同源策略限制,同源是指:域名,协议,端口相同。javascript

1.跨域资源共享(CORS)

须要被请求方的服务端设置: Access-Control-Allow-Origin。兼容性不够好,在IE10如下的浏览器不支持。java

2.服务器代理

A客户端访问A服务器,并在A服务器上作代理访问B服务器把请求结果返回A客户端,即实现了A客户端请求B服务器的跨域需求。json

3.JSONP

原理:全部具备src属性的HTML标签都是能够跨域的,包括<script><img><iframe>,因此咱们一般会把一些图片资源放到第三方服务器上,而后能够经过<img>标签的src属性引用。跨域

  1. 首先在客户端注册一个callback, 而后把callback的名字传给服务器。浏览器

  2. 服务器先生成 json 数据。将 json 数据直接以入参的方式,放置到 callback中,这样就生成了一段 js 语法的文档,返回给客户端。服务器

  3. 客户端浏览器,解析script标签,并执行返回的 javascript 代码,此时数据做为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)函数