如何在node.js express中使用jsonp
我正在尝试使用node.js制作三星智能电视应用程序 在我的项目中,我想让我的应用程序与服务器pc进行通信 根据许多网站,我可以用“jsonp”来实现这一点 这是我找到的客户端代码如何在node.js express中使用jsonp,node.js,express,jsonp,Node.js,Express,Jsonp,我正在尝试使用node.js制作三星智能电视应用程序 在我的项目中,我想让我的应用程序与服务器pc进行通信 根据许多网站,我可以用“jsonp”来实现这一点 这是我找到的客户端代码 <html> <head> <title>jsonp test</title> <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<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来处理跨域的问题,但我认为它不起作用
我能做些什么来解决这个问题
请给我帮助 尝试替换
res.send(req.query.callback++'('+JSON.stringify(obj)+';')代码>
与
只用
res.jsonp(obj)
您可以查看更多信息您确定其他人的计算机可以访问您的计算机(在同一网络上,可以ping等)?@arghbleargh谢谢您的评论!!我查过了。。。其他人可以访问我的服务器…尝试查看网络检查器,看看请求和响应是什么。我认为如果您使用res.jsonp(),则不需要对对象进行字符串化并用回调进行包装。这是不安全的,因为您可以通过回调
URL参数执行脚本注入。您需要首先使用js字符串Escape对回调参数值进行转义:在express中,是否可以在同一页面上通过$.getJSON和recv json响应进行转义?使用response.jsonp执行此操作会在一个新页面中呈现结果。不清楚您试图执行什么操作。请将其作为问题发布,并提供详细信息@user2290820问题如下:
res.jsonp(obj)