1.为啥出现跨域???前端
在制定Html规则时,为了安全的考虑,一个源的脚本(网页,网站)不能与另外一个源的资源进行交互,node
因此就引起一个词叫作“同源策略”。nginx
同源策略:同源策略是一种约定,它是浏览器最核心的也最基本的安全功能,若是缺乏了同源策略,则面试
浏览器的正常功能可能会受到影响。后端
同源:所谓同源(即指在同一个域),就是两个页面具备相同的协议(protocol),主机(host)和端口号(port)跨域
2.啥是跨域???浏览器
当协议,主机,和端口号有一个不一样时,就是跨域。安全
须要注意的是:默认的端口号是80
服务器
3.受限制的场景有哪些呢???(面试回答)post
1)Cookie,LocalStorage没法读取
2)DOM和js对象没法读取,主要是iframe(能够说有iframe的对象没法读取)
3) Ajax请求不能发送
跨域报错长这样子:
4.解决跨域的方法???
对最主要的AJAX跨域来讲(也就是日常调接口时):
1)(后端)服务器配置CORS(跨域资源共享)
2) (后端)node.js或nginx,反向代理,把跨域改形成同域
3)(前端)将JSON升级成JSONP,在JSON的基础上,利用<script>标签能够跨域的特性,加上头设置
对iframe跨域来讲:
H5提供了postMessage()的方法,能够在父子页面进行通讯(加分项)