我可以通过我的浏览器成功点击此端点以及我为Chrome提供的RESTclient插件(即Postman)https://transitdata.phoenix.gov/api/tripupdates?format=json
然而,当我从我的应用程序发送GET请求时,我得到:
No 'Access-Control-Allow-Origin' header is present on the requested resource
示例GET请求
jQuery.ajax({
url: 'https://transitdata.phoenix.gov/api/tripupdates?format=json',
type: 'GET',
success: function (data) {
console.log(data);
}
});
如果我发送JSONP(带回调),我仍然会得到:
Unexpected Token :
示例JSONP请求
$.ajax({
url: "https://transitdata.phoenix.gov/api/tripupdates?format=json&callback=parseResponse",
dataType: "jsonp",
success: function( response ) {
console.log( response ); // server response
}
});
我不确定我在这里做错了什么。有什么建议吗?
答案 0 :(得分:0)
服务器的输出实际上并没有将结果包装在回调函数中,因此服务器似乎不支持JSONP
。
下一个最佳选择可能是拥有一个本地代理来为您获取该数据。
修改强>
服务器返回原始JSON:
{"header":{"gtfs_realtime_version":"1","incrementality" //snip
您对JSONP
支持服务器的期望是:
callbackName({"header":{"gtfs_realtime_version":"1","incrementality" //snip
您的代理服务器将位于您的同一个域中,并会为您获取该JSON,然后将其返回到您的脚本,从而避免您遇到的跨域问题。