1、跨域的原理
跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的。
同源策略,是浏览器对 JavaScript 实施的安全限制,只要协议、域名、端口有任何一个不同,都被当作是不同的域。
跨域原理,即是通过各种方式,避开浏览器的安全限制。
2、跨域的解决方法
- JSONP:
首先我们先弄明白 jsonp 的原理,通俗的讲就是动态生成一个 script,由于 script 不受同源策略的限制,就可以去请求不同域的接口了。
ajax 请求受同源策略影响,不允许进行跨域请求,而 script 标签 src 属性中的链 接却可以访问跨域的 js 脚本,利用这个特性,服务端不再返回 JSON 格式的数据,而是 返回一段调用某个函数的 js 代码,在 src 中进行了调用,这样实现了跨域。
步骤:
A. 去创建一个 script 标签
B. script 的 src 属性设置接口地址
C. 接口参数,必须要带一个自定义函数名,要不然后台无法返回数据
D. 通过定义函数名去接受返回的数据
- CORS:跨域资源共享。就是在后台服务器端允许某个域名下的请求。
修改响应头:
- nginx: 通过服务器反向代理,将前端访问域名跟后端服务域名映射到同源的地址下,从而实现前端服务和后端服务的同源,那自然不存在跨域的问题了。