前端
$.ajax({
type: "GET",
url: "localhost:3000/getData.jsonp",
dataType: "jsonp",
success: function(data) {
console.log(data)
}
});
node
const Koa = require('koa')
const app = new Koa()
app.use(async(ctx) => {
console.log(ctx.method);
ctx.set("Access-Control-Allow-Origin", "*");
/*星号表示所有的异域请求都可以接受,*/
ctx.set("Access-Control-Allow-Methods", "GET,POST");
// 如果jsonp 的请求为GET
if (ctx.method === 'GET' && ctx.url.split('?')[0] === '/getData.jsonp') {
console.log(ctx.query)
// 获取jsonp的callback
let callbackName = ctx.query.callback || 'callback'
let returnData = {
success: true,
data: {
text: 'this is a jsonp api',
time: new Date().getTime(),
}
}
// jsonp的script字符串
let jsonpStr = `;${callbackName}(${JSON.stringify(returnData)})`
// 用text/javascript,让请求支持跨域获取
ctx.type = 'text/javascript'
// 输出jsonp字符串
ctx.body = jsonpStr
} else {
ctx.body = 'hello jsonp'
}
})
app.listen(3000, () => {
console.log('[demo] jsonp is starting at port 3000')
})
浏览器访问报错,控制台里面后台都没打印
node端没打印东西,node里面应该是没走到那里
大神们,请帮助啊
打印一下你的
jsonpStr
,看看拼接后的到底是个什么样的吧