2012-02-29 11 views
1

概要としては、メインのウェブサイトとして機能するFlaskアプリと、別々のポートで独立して動作するチャットサーバーとして機能するTornadoアプリがあります。フラスコ内でajax経由で竜巻でクッキーにアクセスする

チャットアプリが直接私が午前問題は、私はブラウザを介してチャットサーバにアクセスする場合、セッションが読まれるということですが、Ajax呼び出しを使用して

self.get_cookie(settings.SESSION_COOKIE_NAME)

、フラスコからセッション情報を読み込み、セッションはしません。

チャットサーバーは、クロスドメインコールを許可するために、Access-Control-Allow-Domainヘッダーを提供します。 Ajaxは非常に簡単です

$.getJSON('http://127.0.0.1:8888', {'message': 'test'}, function(){});

クッキードメインは、単に127.0.0.1に設定し、HTTPのみクッキーではありません。

ブラウザでCookieにアクセスできる特別な理由はありますか?127.0.0.1:8888で、Ajaxリクエストではありません。

答えて

2

http://code.google.com/p/jquery-jsonp/wiki/APIDocumentation

私の研究から、クロスドメインAjaxの呼び出しは、回避策のために許可される上記のライブラリを使用して、リクエストヘッダにクッキー情報を送信しないことが表示されます。

注これは、そうでない場合、エラーがスローされると、提供されるコールバックGETパラメータに包ま送らなければならない付加JSONP応答における

Cookie Access over JSONP

と同様です。例えば

Uncaught SyntaxError: Unexpected token :

http://127.0.0.1:8888/chat/get_messages?callback=jsonp

jsonp(
    { 
     'data': '1', 
     'result': true 
    } 
) 
を応答します
関連する問題