jquery和random.org“Access-Control-Allow-Origin不允许”

时间:2011-08-11 18:48:01

标签: jquery sinatra

我在使用jQuery从random.org请求随机数时遇到问题。当我使用静态页面和以下javascript时,我没有任何问题得到随机数。但是,我正在Heroku上托管一个Sinatra应用程序(同样,当使用Thin在本地生产我的应用程序时)我得到“(Access-Control-Allow-Origin”不允许“(网站)”。

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');
    });
});

};

思想?

3 个答案:

答案 0 :(得分:3)

好吧,快速检查一下,random.org不会返回任何 CORS标头。这解释了为什么不允许您通过网站上的Javascript请求它。

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

答案 1 :(得分:1)

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

Math.random()

答案 2 :(得分:0)

使用jQuery YQL插件从此页面获取结果。

它通过使用Yahoo服务来获取所需页面的内容来绕过原点检查。

http://plugins.jquery.com/project/jquery-yql-plugin

但这是非常复杂的方式。你为什么不使用Math.random()?