JSONP解析--可运行的代码
发布时间:2020-12-16 18:50:49 所属栏目:百科 来源:网络整理
导读:考虑到安全问题,一个域名的js只能发起对自己的域名的请求,否则就是跨站的,这是不被允许的。但是,标签script内加载的脚本是不受此限制的。有人因此hack出JSONP,利用这一个特点即可发起跨站的脚本请求,并传递跨站数据给客户端。本文对此技术验证。 我们
考虑到安全问题,一个域名的js只能发起对自己的域名的请求,否则就是跨站的,这是不被允许的。但是,标签script内加载的脚本是不受此限制的。有人因此hack出JSONP,利用这一个特点即可发起跨站的脚本请求,并传递跨站数据给客户端。本文对此技术验证。 我们会创建两个node服务,分别为8081、8082两个端口,扮演当前站点和跨域站点。假设我从服务器A加载一个HTML文件,文件内通过脚本标签发起对跨域站点B的请求。B站希望返回数据{msg:1}给A站的客户端。 A站点。服务器文件home.js,提供静态首页服务var express = require('express'); var app = express(); var path = require('path') var public = path.join(__dirname,'public') app.use('/',express.static(public)) var server = app.listen(8081,function () { console.log("home site started ") }) B站点。提供JSONP服务。文件名为:cors.jsvar express = require('express'); var app = express(); app.get('/jsonp/:callback',function (req,res) { var callback = req.params.callback console.log(callback) res.end(callback+'({msg:1})'); }) var server = app.listen(8082,function () { console.log("CORS Server started") }) 其首页index.html:<script> function cb(obj) { alert(obj.msg) } </script> <script src="http://localhost:8082/jsonp/cb" ></script> 启动服务器node home.js node cors.js 访问localhost:81,看到一个对话框显示1。此时,B站返回的数据已经成功的传递给了A站的客户端。 完成。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |