2011-08-11 8 views
5

jQueryを使用してrandom.orgから乱数を要求する際に問題が発生しています。静的ページと次のjavascriptを使用しているとき、乱数を取得する際に問題はありません。しかし、私はHerokuのSinatraアプリをホストしています(また、私のアプリケーションをThinを使用してローカルで実行すると、「Access Control-Allow-Originで許可されていません」)。jqueryとrandom.orgは "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'); 
    }); 
}); 

}; 

考えられますか?

+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

0

このページから結果を得るには、jQuery YQLプラグインを使用してください。

Yahooサービスを使用して必要なページの内容を取得することにより、原点確認をバイパスします。

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

しかし、それは非常に複雑な方法です。 Math.random()を使用してみませんか?

3

まあ、簡単にチェック、random.orgに任意の CORSヘッダを返しません。これはあなたのウェブサイトからJavascriptでリクエストすることができない理由を説明しています。

静的ファイルは、ローカルで、つまりfile:///プロトコル経由でロードされていますか?その他のセキュリティ測定値があり、ブラウザは通常、クロスドメインAJAXを許可します。

関連する問題