2010-11-20 11 views
0

私は、アンケートをページに埋め込むサービスを提供しています。このアンケートでは、どこでもホストされているページから、自分のサーバーへのクロスドメインajax呼び出しが行われます。レールでのクロスドメインセッションの問題

サービスはレール3で実行されます。セッション内で最後に回答した質問のインデックスを保存しようとしています。 ActiveRecordストアがアクティブです。このサービスは英雄でホストされています。私はセッションテーブルを移行し、それをレイクしました。

ただし、値はセッションに保存されていません。これは私が回避できない問題か、セッションをこのようにすることは可能ですか?

ここで問題の実例です:

session current stage is 0 
session current stage is 1 

(セッション値が1になった後)、それは次回の実行時:

session current stage is 0 
session current stage is 2 

それとも

Rails.logger.info { "session current stage is #{session[:current_stage]}" }  
session[:current_stage] = params[:current_stage].to_i 
session[:current_stage] ||= 0 
Rails.logger.info { "session current stage is #{session[:current_stage]}" } 

出力は次のようになりますドメイン間の問題に関係なく、セッションが正常に機能していないということだけですか?

すぐに追加:サーバーがヒットしたたびに一意のセッションが作成され、次回は取得できないように見えます。これは、各呼び出しを新しい、前例のないイベントとして扱います。私はこれが私が行っているクロスドメインの副産物だと思う。どんな解決策ですか?

+0

どのようなセッションを使用していますか?クッキー ? ActiveRecord?その他? – shingara

+0

クロスドメインのajaxコールをどうやって作成しようとしていますか?これはすべてのメジャーなブラウザでデフォルトでは無効になっているので、このようにリクエストしてみるために何をしていますか? –

+0

テスト中のブラウザでサードパーティのCookieが有効になっていますか? – molf

答えて

0

遅延返信のお詫び - クッキーが一掃され、この質問が失われました。

私はjQuery ajax呼び出しによるクロスドメインコールを使用しています。接続は素晴らしいです。私はページロード時に初期化ルーチンを呼び出して、リモートサーバーを呼び出し、JSONオブジェクトを取得してブラウザで実行されるアンケートを組み立て、結果をサーバーに返送します。セッションの必要性を排除するJSONに埋め込まれた一連のコードがあります。しかし、ユーザーがページを変更すると、次のページがinit呼び出しを取得したときに、すでに見た接続であることをサーバーが知る必要があります。

私はActiveRecordセッションを使用しています。これらはセッションテーブルに蓄積されていることがわかります。新しい接続ごとに新しいセッションが作成されるようです。これらの接続は、ほとんどすべてajax接続を介して行われます。

私は、リモートサービスに接続するページに埋め込まれたスクリプトを使用してクッキーを作成しています。これは、ロールオーバー独自の永続化メカニズムを示唆しています。サーバーからキーを取得して確認します。私はおそらくサーバー側でIPチェックをして、別々のセッションが別々のセッションであることを縫うことができると思います...

+0

ダン、これは「回答」ではなく、あなたの質問を明確にしただけです。たぶんあなたはこの情報を追加するためにあなたの質問を編集し、この「答え」を削除するべきです。 – edgerunner

関連する問題