什么是跨域:跨域是一种安全机制,浏览器有一种策略为同源策略,同源策略规定了部分请求不能被浏览器所接受。
什么是同源策略:url地址由三部分组成分别是协议、域名(ip地址)、端口。只有协议、域名、端口号都一致时,才被称为同源。而同源策略规定,只有发送请求的那一边和接受请求的那一边处于同源的情况下,浏览器才会接受响应。
常见的解决跨域的方法
1、jq的ajax自带解决跨域的方法。底层原理采用的JSONP的跨域解决方案。如下

2、动态创建script标签解决跨域。如下

3、前端代理解决跨域,在配置文件config.js中配置proxy

4、服务端代理(Nginx代理)nginx代理一般使用在生产环境。是服务端解决跨域的一种方案。注意,nginx配置完代理后需要重启nginx,nginx代理是生产环境的常用方案。
#如果监听到请求接口地址是 www.xxx.com/api/page ,nginx就向http://www.yyy.com:9999/api/page这个地址发送请求
server {
listen 80;
server_name www.xxx.com;#判过滤出含有api的请求
location /api/ {
proxy_pass http://www.yyy.com:9999;#真实服务器的地址
}
}
5、添加响应头解决。在响应头中的 Access-Control-Allow-Origin 字段中携带上需要访问的地址。这就等于告诉浏览器,这个地址是安全的,无需拦截。当然,我们也可以进行所有域名均不拦截的设置Access-Control-Allow-Origin':'*'。代表所有域名均不拦截。并不建议此种方案,因为安全性不高。
