跨域问题的由来
由于浏览器的同源策略导致,同源策略的解释是:javascript脚本不能请求不同协议或不同域名或不同端口的url
跨域问题的解决方案
1.jsonp
由于<script/>标签的src的是没有同源策略的。利用<script/>请求的方案就是jsonp.具体做法是是需要定义一个function,这个function需要有参数。<script/>请求的时候把这个方法名告知服务端,服务端的获取此方法名,在传给前端的js脚本中调用此方法,参数为数据。如:
<script>
function a(result) {
console.log(result);
}
</script>
<script src="https://www.others.com?callback=a" />
2.cors
cors是跨源资源分享(Cross-Origin Resource Sharing)的缩写,需要前后端配合,其原理是前端在请求时候带上origin: *** 字段,服务端在返回的时候带上Access-Control-Allow-Origin: *** 字段则可以了。
3.nginx反向代理
利用nginx反向代理功能请求,如下,把请求/apis的所有接口代理到127.0.0.1:4000:
location /apis {
proxy_pass http://127.0.0.1:4000;
proxy_http_version 1.1;
}