什么是跨域?
跨域指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制
同源策略: 是指协议、域名、端口都相同,其中有一个不同都会产生跨域
ps: 跨域限制访问,其实就是浏览器的限制
解决跨域的方法
一. JSONP:
Jsonp实现原理:< script >标签不收浏览器同源策略的影响,允许跨域引用资源,因此可以通过动态常见script标签,然后利用src属性进行跨域
Jsonp实现方式: 动态创建script标签,通过回调函数处理请求结果,
Jsonp的有点: 1. 可以跨域 2. 兼容性好
Jsonp的缺点:
- 只能支持GET请求,Jsonp在调用失败是不会反悔各种HTTP状态
- 安全性问题 ,如果提供json的服务被人控制,name所有调用这个Jsonp的网站都存在漏洞
二、通过设置响应头允许跨域(cors方式)
CORS(跨域资源共享)定义一种跨域访问的机制,可以让ajax实现跨域访问,CORS允许一个域上的网络应用向另一个域提交跨域ajax的请求,只需由服务器发送一个响应头即可
header(“Access-Control-Allow-Origin:*”); 允许仁和来源
header(“Access-Control-Allow-Origin:http://local.com”); 值允许来自域名http://local.com的请求
header(“Access-Control-Allow-Origin-Method:POST,GET”); 允许访问的方式
三、利用Nginx反向代理解决跨域
反向代理是指代理服务器来接受Internet上的链接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的可语段,此时代理服务器对外就表现为一个服务器,反向代理服务器对于客户端而言他就像是原始服务器,这就是一个代理的模式,相当于绕过了浏览器端,就不存在跨域问题