开发者

Cross domain ajax json

I'm on site.com trying to grab some开发者_开发百科 json data from my node.js server serving on port 8080.

I get this Error message:

XMLHttpRequest cannot load http://site.com:8080/json/1. Origin http://site.com is not allowed by Access-Control-Allow-Origin.

my code:

    $.get('http://site.com:8080/1/', {}, function (Data) {
       console.log(Data);
    }, "json");

But it is the same domain though! :(

Also consider my backbone.js model:

model = Backbone.Model.extend({
    url: function() {
        return 'http://site.com:8080/' + this.id
    }
});

Is there any way to resolve this other than using jsonp?

Thanks.


If you're making the call to the same domain, why do you have the absolute path in your $.get request?

Try this:

$.get('/1/', {}, function (Data) {
   console.log(Data);
}, "json");


model = Backbone.Model.extend({
    url: function() {
        return '/' + this.id
    }
});

If you are truly making the call on the same domain, then the above code should work.


Alternatively, you could modify your node.js server to allow Cross-Origin Resource Sharing (CORS). This only works in modern browsers. The simplest (and least secure) thing to do would be for your node.js server to emit the header "Access-Control-Allow-Origin: http://site.com". You can learn more about CORS here: http://www.w3.org/TR/cors/


You have to make the call to the same domain and port your script was loaded from. You should be able to use jmort's code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜