2012-11-07 3 views
0

jQuery로 Sinatra 앱에 로그인하려고하지만 Sinatra가 어떤 이유로 든 인식하지 못하는 것 같습니다. 여기에 사용자가 로그인했는지 확인할 수있는 코드가 있습니다.Sinatra가 세션 용 자바 스크립트를 인식하지 못합니다.

시나 응용 프로그램 :

get '/logged_in' do 
    if session[:logged_in] == true 
     status 200 
     "OK" 
    else 
     status 200 
     "False" 
    end 
end 

내 브라우저에서 /logged_in 찾아

, 나는 OK를 볼 수 있지만, 나는 다음과 같은 자바 스크립트를 실행할 때, 나는 콘솔에 인쇄 False를 얻을 수는 - 나에게 이상한 것 같다.

var r = $.ajax({ 
    type: "GET", 
    url: "http://xxx-xxx.com/logged_in" 
}); 
r.success(function(msg) { 
    console.log(msg); 
}); 

모든 통찰력이 부여됩니다.

+0

성공 함수를'ajax' 함수 설정의 일부로 만들려고 했습니까? 즉,'success : function (msg) {'? 여기 코드처럼 : http://api.jquery.com/jQuery.ajax/#callback-functions – iain

답변

1

자세한 내용을 제공 할 수 있다면 좋을 것입니다.

var r = $.ajax({ 
    cache: false, 
    type: "GET", 
    url: "/logged_in", 
    success: function(msg) { 
    console.log(msg); 
    } 
}); 

일부 브라우저는 적극적으로 특정 GET 요청에 AJAX 요청을 캐시 : (. 브라우저는, HTTP 상태 코드, 또는 와이어 샤크에서 심지어 덤프 포함 연대기 요청 로그) 그러나 여기에 내 생각이다. 따라서 cache: false을 시도해보십시오. 나중에 성공 함수를 추가하는 것이 나에게 이상한 것처럼 보입니다. 나는 어떤 코드에서도이를 결코 보지 못했습니다.

편집 : 서버가 동일한 도메인의 AJAX 요청에 응답하고 있습니까? 도메인은 브라우저 테스트와 동일해야합니다. 일반적으로 URL 내부에 도메인을 지정할 필요가 없어야하므로 여기에서 코드에서 제거했습니다. 따라서 결국 Same Origin Policy으로 인해 문제가 될 수 있습니다.

+0

그것은 같은 도메인에 있지는 않지만 서버에 올바른'Access-Control-Allow-Origin'을 설정했습니다 사이드 헤더. 이것이 여전히 문제가 될 수 있을까요? – Zen

+0

도메인 간 쿠키 때문에 걱정하지 마십시오. 나는 이것을 깨달았 음에 틀림 없다. – Zen

0

저는 Sinatra 문제가 아니라 jQuery 문제라는 것에 내기를 걸 겠어요. 쿠키가 ajax 요청을 위해 전송되는지 확인하십시오. 쿠키가 전송되지 않는 데는 여러 가지 이유가 있습니다.

관련 문제