2012-03-24 12 views
1

私は別のドメインのサーバー(JsonNpを使用)からデータを取得するjqueryウィジェットを持っています。サーバーはセッションからデータを返します。 私の問題はSafariで発生します(他のブラウザでも動作します)。サーバーに要求を行うと、毎回新しいセッションのデータが返されます。これはセッションIDがCookieに保存されているためです(ただし、サファリではデフォルトでサードパーティのクロスドメインCookieを保存することはできません)。 Crossdomain ajaxを使用するとThirdParty Cookieの問題が発生する

は私が自動検出さ にCookieなし からセッション状態を変更しようとしたが、セッションはサファリでは動作しません。

はまた、私は、以下のハックを試してみましたが、それはいくつかの理由のために私のために動作しません:

まあ
$(function(){ 
    $('body').append('<iframe id="cookiesHackFrame" name="cookiesHackFrame" src="http://mysite.com/" style="display:none;"></iframe>'); 
    $('body').append('<form id="cookiesHackForm" action="http://mysite.com/" method="post" target="cookiesHackFrame" >'); 
    $('#cookiesHackForm').submit(); 
}); 
+0

この問題の私の説明は明確だった... –

答えて

3

... Safaryでは、サードパーティのクロスドメインのクッキーをブロックするので...に方法はありません解決してください...解決策は、セキュリティ戦略の "中断"になるでしょう...それは起こりそうもありません。解決する方法があります。 1)ブラウザの設定を変更する...しかし、これはユーザーはサーバーを使用することはできません。そのため、一度問題が検出されるとセキュリティ設定を変更するようユーザーに警告する可能性があります。

2)3Dパーティサーバーは、クッキーをメインサーバーに送信する情報をメインサーバーに送信し、クッキーを発行します。このようにクロスドメインは回避されます。 2つのサーバーは、Webサービス(非常に効率的ではありませんが、動作します)を介して通信する場合があります。

+0

ermmm thats悪い、このウィジェットはどんなサイトにもインストールする必要があるので、私はsecontを使うことができません... Cookieless = UseUriはどうしますか?私はなぜそれがうまくいかないかを結果を伝えるためにもう一度試そうとします。また、新しいタブでURLを開くと、ウィジェットを使用するすべてのサイトで動作します!だから私はいくつかの回避策をする必要があります...とにかくおかげで –

+1

mvc doesnサポートされてセッションをuriでエンコードされます。しかし、ウィジェットは常に同じページにあるので、セッションIDを隠しフィールドに格納し、更新するたびにサーバーに送信することができます。 –

+1

ユーザーがiframe内のコンテンツとやり取りする場合、SafariはCookieを許可します。 – Josh

1

あなたの問題を少し難解ですが、クッキーからデータを送信する必要がある場合は、リクエスト(POST/GET)を他のサーバーにエンコードしてください。セッションIDも渡すことはできませんか?

おそらく、達成しようとしていることを示すもう少しのコードですか?

関連する問題