2011-08-11 173 views
5

我有一个问题,从random.org使用jQuery请求一个随机数。当我使用静态页面和下面的JavaScript时,我没有任何问题获得随机数字。但是,我在Heroku上托管了一个Sinatra应用程序(另外,在使用Thin生产本地应用程序时),我得到“(网站)不被Access-Control-Allow-Origin允许”。jquery和random.org“不允许访问控制允许来源”

function raffler(){ 

var rowCount = $('#winnerTable tr').length; 

$('#winnerButton').click(function() { 
    $.get("http://www.random.org/integers/?", {num: "1", min: "1", max: rowCount, col: "1", base: "10", format: "plain", rnd: "new"}, function(randNum) { 
     var myNumber = randNum; 
     $("#entry-" + randNum).addClass('winner'); 
    }); 
}); 

}; 

想法?

+0

Ajax请求受同源策略限制。除非您的页面托管在域名“www.random.org”上,否则您不应该能够发出该Ajax请求... –

回答

1

老实说,我不明白你怎么能以任何方式做到这一点。因为你不应该这样做。 Access-Control-Allow-Origin是一种阻止跨域请求并且是大多数客户端脚本引擎(例如Flash)的一部分的XSS保护。使用下面的随机数字生成:

Math.random() 
+0

我也不确定;我无法弄清楚它为什么在它工作时起作用,为什么它不起作用。我想尽可能使用随机数生成(random.org),但我只需要解决Math.random()。 =]感谢您的帮助。 – YuKagi

+0

但是,如果您在桌面上设置了.html文件,并使用我在上面发布的代码链接到.js文件,那么它将起作用。 ;) – YuKagi

+0

看到Boldewyn的回答,他解释了为什么它在本地工作 – SinistraD

3

好了,就进行快速检查,random.org不返回任何CORS头。这就解释了为什么你不能通过你的网站通过Javascript请求它。

您是否在本地加载了静态文件,它在哪里工作,即通过file:///协议?还有其他安全措施值班,浏览器通常允许跨域AJAX。

相关问题