一、跨域概念
跨域是指浏览器不能执行其余网站的脚本。它是由浏览器的同源策略形成的,是浏览器对JavaScript实施的安全限制
同源:协议、域名、端口都要同样,有一个不同就存在跨域
二、cors跨域
特色:后端配置,开发、上线均不影响
在后端设置以下请求信息
Access-Control-Allow-Origin : 容许请求源 // *全部访问地址,也能够设置具体地址
Access-Control-Allow-Methods: 容许请求方法 // get、post、put、delete、options
Access-Control-Allow-Headers: 容许带的请求头 // 表示请求时必须携带的请求头
跨域请求首先会发送options试探请求
三、nginx中间代理
特色:能够前端配置,能够运维配置,能够后端配置,配置简单,性能高
(1)下载nginx
(2)修改配置文件:nginx/conf/nginx.conf
找到带有proxy_pass的server对象进行修改
四、jsonp
特色:利用script标签不跨域的特色,
(1)前端发送jsonp,须要带上回调函数
(2)后端返回数据,必须把数据写在回调里面
(3)前端拿到返回值(实际上是一个回调函数,参数是数据),再执行这个函数
示例:node.js
后端:
app.get( "/api/jsonp', function( req, res ){
var data = { name: "test" }
data = JSON.stringify(data)
var callback = "handleresponse(" + data + ")"
res.send(callback)
})
前端:
function getJsonp(){
$.ajax({
url: "http://localhost:3000/api/jsonp",
data: { name: "xxx},
dataType: "jsonp",
jsonpCallback: "handleresonse"
})
}
function handresponse(data){
console.log(data)
}
getJsonp()