2011-08-11 2 views
5

jQuery를 사용하여 random.org에서 임의의 번호를 요청하는 데 문제가 있습니다. 정적 페이지와 다음 자바 스크립트를 사용할 때 임의의 숫자를 가져 오는 데 문제가 없습니다. 그러나, 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

솔직히 나는 어떤 식 으로든 당신이 그것을 할 수있는 방법을 모르겠다. 왜냐하면 당신은 그것을 할 수 없어야합니다. 액세스 제어 - 허용 - 원본은 도메인 간 요청을 차단하고 대부분의 클라이언트 측 스크립팅 엔진 (예 : 플래시)의 일부인 XSS 보호 기능입니다. 난수 생성에 다음 사용

Math.random() 
+0

나는 어느 쪽이든 확실하지 않습니다; 나는 그것이 작동 할 때 왜 작동하는지 그리고 왜 작동하지 않는지를 알 수 없다. 가능한 한 난수 생성 (random.org)으로 사용하고 싶었지만 Math.random()을 처리해야합니다. =] 도와 줘서 고마워. – YuKagi

+0

그러나 바탕 화면에 .html 파일을 설치하고 위에서 게시 한 코드로 .js 파일에 연결하면 작동합니다. ;) – YuKagi

+0

Boldewyn의 답변을 참조하십시오. 그는 왜 그것이 지역에서 효과가 있는지 설명했습니다. – SinistraD

0

이 페이지에서 결과를 얻으려면 jQuery YQL 플러그인을 사용하십시오.

야후 서비스를 사용하여 원점 확인을 우회하여 필요한 페이지의 내용을 가져옵니다.

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

는하지만 매우 복잡한 방법입니다. Math.random()을 쓰지 그래?

3

음, 빠른 검사에 random.org이 어떤 CORS 헤더를 반환하지 않습니다. 이것은 귀하의 웹 사이트에서 Javascript를 통해 요청할 수없는 이유입니다.

정적 파일을 로컬로로드했는데, 즉 file:/// 프로토콜을 통해 정적 파일을로드 했습니까? 근무 중 다른 보안 측정이 있으며 브라우저는 일반적으로 도메인 간 AJAX를 허용합니다.

관련 문제