跨域问题
方法一:jsonp
1. jsonp的原理
代码:
客户端:
<script src="http://localhost:8081/TestJsonp?callback=func"></script>
服务端:
app.get('/TestJsonp',(req,res)=>{
console.log(req.query.callback);
fs.readFile(file,(err,data)=>{
if(err)console.err(err)
else{
res.end(`${req.query.callback}(${data.toString()})`)
//res.end(data.toString())
}
})
})
2. jsonp的封装(ajax)
代码:
客户端:
$.ajax({
type: "GET", //data 传送数据类型。post 传递
dataType: 'jsonp', // 返回数据的数据类型json
url: "http://localhost:8081/TestJsonp", // yii 控制器/方法
//data: { callback: func }, //传送的数据
error: function (err) {
console.log(err);
},
success: function (data) {
console.log(typeof(data),data);
}
})
服务端:
app.get('/TestJsonp',(req,res)=>{
console.log(req.query.callback);
fs.readFile(file,(err,data)=>{
if(err)console.err(err)
else{
//res.end(`${req.query.callback}(${data.toString()})`)
res.end(data.toString())
}
})
})
方法二:ACAO:’*’
代码:
客户端:
$.ajax({
type: "GET", //data 传送数据类型。post 传递
dataType: 'json', // 返回数据的数据类型json
url: "http://localhost:8081/TestJsonp", // yii 控制器/方法
//data: { callback: func }, //传送的数据
error: function (err) {
console.log(err);
},
success: function (data) {
console.log(typeof(data),data);
}
})
服务端:
app.get('/TestJsonp',(req,res)=>{
console.log(req.query.callback);
fs.readFile(file,(err,data)=>{
if(err)console.err(err)
else{
res.set({
'Content-Type':'application/json',
'Access-Control-Allow-Origin':'*'
})
//res.end(`${req.query.callback}(${data.toString()})`)
res.end(data.toString())
}
})
})