我很确定JSONP意味着没有跨域限制。我正在尝试使用节点和表达式创建一个JSONP服务。下面是简单的代码:
self.routes['/portfolio'] = function(req, res) {
// Website you wish to allow to connect
res.jsonp({ "my": "object" });
};
当我这么做时:
$.getJSON('http://127.0.0.1:8080/portfolio', function(data){ console.log(data)});
我知道这个错误。
XMLHttpRequest无法加载http://127.0.0.1:8080/portfolio。“访问控制-允许-原产地”标题的值“http://127.0.0.1:8080/portfolio”与所提供的源不相等。因此,“http://api.jquery.com”源是不允许访问的。
有人能解释一下这是怎么回事吗?如果这是JSONP,为什么我们需要提供头值。我如何使这个工作跨域?
发布于 2015-08-12 13:43:32
$.getJSON
不将请求视为JSONP,除非请求URL包含类似于callback=?
的字符串。
所以,试着去做吧;
$.getJSON('http://127.0.0.1:8080/portfolio?callback=?', function(data){ console.log(data)});
发布于 2015-08-12 13:45:56
实际上,您只需添加?callback=?,剩下的由jQuery来完成。
$(document).ready(function() {
$.getJSON('http://127.0.0.1:8080/portfolio?callback=?', function(data) {
console.log(data);
});
});
来源:http://api.jquery.com/jQuery.getJSON/
发布于 2015-08-12 13:46:05
将下面的代码放入app.js或server.js中
/*************To允许访问跨域请求*/
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
/*************To Allow access to cross domain request *************/
https://stackoverflow.com/questions/31966897
复制相似问题