我可以使用 JSONP 访问任何 API 还是 API 需要专门支持它?
Can I access any API with JSONP or does the API need to specifically support it?
我正在尝试从我的站点 foo.com 访问来自 bar.com 的 API。 Bar.com不允许CORS,我不知道他们是否正式支持JSONP。
我还能通过 JSONP(使用 jQuery)访问 API 还是该网站明确需要支持它?
注意,这是我的 AJAX 请求:
$.ajax({
url: 'https://api.example.com',
jsonp: 'callback',
dataType: 'jsonp',
data: {
'command' : 'abc',
'partnerName' : 'def',
'partnerPassword' : 'ghi',
'partnerUserID' : 'jkl',
'partnerUserSecret' : 'mnop'
},
error: function (response) {
console.log(response);
return false;
},
success: function (response) {
console.log(response);
return false;
}
});
},
从 Chrome 我得到:
Uncaught SyntaxError: Unexpected token :
这是因为 JSONP 所做的是尝试评估来自 API 端点的代码。
如果调用的结果是,假设
{"result": "OK"}
然后,为了使 JSONP 工作,服务器必须以这种方式响应它:
callback({"result": "OK"})
因为 oyu 在您的 ajax 调用中将 属性 jsonp
定义为 callback
。
我正在尝试从我的站点 foo.com 访问来自 bar.com 的 API。 Bar.com不允许CORS,我不知道他们是否正式支持JSONP。
我还能通过 JSONP(使用 jQuery)访问 API 还是该网站明确需要支持它?
注意,这是我的 AJAX 请求:
$.ajax({
url: 'https://api.example.com',
jsonp: 'callback',
dataType: 'jsonp',
data: {
'command' : 'abc',
'partnerName' : 'def',
'partnerPassword' : 'ghi',
'partnerUserID' : 'jkl',
'partnerUserSecret' : 'mnop'
},
error: function (response) {
console.log(response);
return false;
},
success: function (response) {
console.log(response);
return false;
}
});
},
从 Chrome 我得到:
Uncaught SyntaxError: Unexpected token :
这是因为 JSONP 所做的是尝试评估来自 API 端点的代码。
如果调用的结果是,假设
{"result": "OK"}
然后,为了使 JSONP 工作,服务器必须以这种方式响应它:
callback({"result": "OK"})
因为 oyu 在您的 ajax 调用中将 属性 jsonp
定义为 callback
。