如何将 jsonp 与 node.js express 一起使用
Posted
技术标签:
【中文标题】如何将 jsonp 与 node.js express 一起使用【英文标题】:How to use jsonp with node.js express 【发布时间】:2013-08-16 09:31:01 【问题描述】:我正在尝试使用 node.js 制作三星智能电视应用程序。
在我的项目中,我想让我的应用程序与服务器 pc 通信。
根据许多网站,我可以使用“jsonp”来做到这一点。
这是我找到的客户端代码。
<html>
<head>
<title>jsonp test</title>
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(function()
$('#select_link').click(function(e)
e.preventDefault();
console.log('select_link clicked');
function test(data)
return "message":"ok";
$.ajax(
dataType: 'jsonp',
data: "data=yeah",
jsonp: 'callback',
url: 'http://172.20.10.3:3000/endpoint?callback=?',
success: function(data)
console.log('success');
console.log(JSON.stringify(data));
);
);
);
</script>
</head>
<body>
<div id="select_div"><a href="#" id="select_link">Test</a></div>
</body>
而且,这是我找到的服务器端代码。
app.get('/endpoint', function(req, res)
var obj = ;
obj.title = 'title';
obj.data = 'data';
console.log('params: ' + JSON.stringify(req.params));
console.log('body: ' + JSON.stringify(req.body));
console.log('query: ' + JSON.stringify(req.query));
res.header('Content-type','application/json');
res.header('Charset','utf8');
res.send(req.query.callback + '('+ JSON.stringify(obj) + ');');
);
这些代码在我的电脑(服务器电脑)上工作,但是当我在其他电脑上打开客户端页面时,它不起作用。
控制台只给我这个日志:
X GET http://172.30.2.2:3000/endpoint?callback=jQuery11020685203080996871_1376482492523&data=yeah&_=1376482492524
我想用jsonp来处理跨域,但是我觉得不行……
我能做些什么来解决这个问题?
请帮帮我!!
【问题讨论】:
你确定对方的电脑可以连接到你的电脑(在同一个网络,可以ping等)吗? @arghbleargh 感谢您的评论!!我检查了...其他人可以访问我的服务器... 尝试查看网络检查器并查看请求和响应是什么。 【参考方案1】:只需使用
res.jsonp(obj)
你可以去ExpressJS JSONP了解更多信息
【讨论】:
in express 是否可以通过 $.getJSON 执行此操作并在同一页面上接收 json 响应?使用 response.jsonp 执行此操作会在新页面中呈现结果 不清楚您要做什么。您能否将其发布为带有详细信息的问题@user2290820 这里是问题:***.com/questions/31891606/…【参考方案2】:尝试替换
res.send(req.query.callback + '('+ JSON.stringify(obj) + ');');
与
res.jsonp(req.query.callback + '('+ JSON.stringify(obj) + ');');
【讨论】:
如果您使用 res.jsonp(),我认为您不需要将对象字符串化并用回调包装它 这不安全,因为您可以通过callback
URL 参数进行脚本注入。您需要先使用 js-string-escape 转义回调参数值:npmjs.com/package/js-string-escape以上是关于如何将 jsonp 与 node.js express 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
在 express.js 中为 node.js 使用 jsonp