如何修复远程站点的Access-Control-Allow-Origin错误

时间:2013-04-05 13:07:50

标签: jquery ajax

我正在尝试在http://rate-exchange.appspot.com/currency使用该服务,但我得到的只是Access-Control-Allow-Origin错误。

了解这是一个服务器问题,http://rate-exchange.appspot.com/currency不是我的服务,我不知道如何解决这个问题。

使用这样的服务:

$.getJSON("http://rate-exchange.appspot.com/currency", { "from": Currency.From, "to": Currency.To }, function (result) {
    if (!result.err) {
        Currency.Rate = result.rate;
        $("#footer-output").text("All sales in " + Currency.To + " including VAT");
    }
    else {
        $("#footer-output").text("All sales in local currency including VAT");
    }
});

现在尝试直接在浏览器中获取此数据不是问题。有什么我可以做的,或者这只能在服务器上修复吗?

2 个答案:

答案 0 :(得分:2)

以下内容有效。我冒昧地在代码中添加货币对象。那部分显然是你在其他地方定义的。

Plunkr:http://beta.plnkr.co/aMVPVE9kUPPcsD0Ma5s3

代码:

$(function(){
 Currency = {};
 Currency.From = "USD";
 Currency.To = "PEN";
 Currency.Rate= 0;
 $.getJSON("http://rate-exchange.appspot.com/currency?callback=?", { "from": Currency.From, "to": Currency.To }, function (result) {
    if (!result.err) {
        Currency.Rate = result.rate;
        $("#footer-output").text("All sales in " + Currency.To + " including VAT");
    }
    else {
        $("#footer-output").text("All sales in local currency including VAT");
    }
});

添加回调=?到url和jquery将发出一个jsonp请求。以下是文档中的部分(中途):http://api.jquery.com/jQuery.getJSON/

JSONP

如果网址包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。有关更多详细信息,请参阅$ .ajax()中有关jsonp数据类型的讨论。

答案 1 :(得分:1)

使用JSONP:

Currency = {};
Currency.From = "USD";
Currency.To = "PEN";
Currency.Rate= 0;   
$.get("http://rate-exchange.appspot.com/currency", { "from": Currency.From, "to": Currency.To }, function (result) {
    if (!result.err) {
        Currency.Rate = result.rate;
        $("#footer-output").text("All sales in " + Currency.To + " including VAT");
    }
    else {
        $("#footer-output").text("All sales in local currency including VAT");
    }
}, 'jsonp');

DEMO