9.jsonp的实现原理
1.?由于浏览器的安全性限制,不允许AJAX访问 协议不同、域名不同、端口号不同的数据接口,浏览器认为这种访问不安全; 客户端: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> function showInfo123(data) { console.log(data) } </script> <script src="http://127.0.0.1:3000/getscript?callback=showInfo123"></script> <!-- <script> show() </script> --> </body> </html> 服务端:app.js // 导入 http 内置模块
const http = require(‘http‘)
// 这个核心模块,能够帮我们解析 URL地址,从而拿到 pathname query
const urlModule = require(‘url‘)
// 创建一个 http 服务器
const server = http.createServer()
// 监听 http 服务器的 request 请求
server.on(‘request‘,function (req,res) {
// const url = req.url
const { pathname: url,query } = urlModule.parse(req.url,true)
if (url === ‘/getscript‘) {
// 拼接一个合法的JS脚本,这里拼接的是一个方法的调用
// var scriptStr = ‘show()‘
var data = {
name: ‘xjj‘,age: 18,gender: ‘女孩子‘
}
var scriptStr = `${query.callback}(${JSON.stringify(data)})`
// res.end 发送给 客户端, 客户端去把 这个 字符串,当作JS代码去解析执行
res.end(scriptStr)
} else {
res.end(‘404‘)
}
})
// 指定端口号并启动服务器监听
server.listen(3000,function () {
console.log(‘server listen at http://127.0.0.1:3000‘)
})
nodemon? .app.js (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |