Cross Origin GET请求

时间:2014-11-19 18:33:18

标签: jquery ajax json jsonp cors

我可以通过我的浏览器成功点击此端点以及我为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
    }
});

我不确定我在这里做错了什么。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

服务器的输出实际上并没有将结果包装在回调函数中,因此服务器似乎不支持JSONP

下一个最佳选择可能是拥有一个本地代理来为您获取该数据。

修改

服务器返回原始JSON:

{"header":{"gtfs_realtime_version":"1","incrementality" //snip

您对JSONP支持服务器的期望是:

callbackName({"header":{"gtfs_realtime_version":"1","incrementality" //snip

您的代理服务器将位于您的同一个域中,并会为您获取该JSON,然后将其返回到您的脚本,从而避免您遇到的跨域问题。