2

ドメイン間でセッション Cookie を共有したい。

複数のドメインを持っています: -

1. mydomain.com
2. mydomain.fr
3. mydomain.de
4. mydomain.da
...and many other language based

現在、サーバーに単一の Web サイトを展開しています。1 つの Web サイトの異なるドメイン間でセッションを共有したいと考えています。どうすればこれを達成できますか?

Web で見つけました<httpCookies domain=".mydomain.com" />が、サブドメイン (test.mydomain.comや などsecure.mydomain.com) では機能しますが、別のドメインでは機能しません。

私も試し<httpCookies domain=".mydomain." />ましたが、このセッションでは機能しなくなりました。

誰か助けてくれませんか?

4

4 に答える 4

1

トップ レベル ドメイン名が異なるドメインで Cookie を共有することはできません。

これはサブドメインでのみ可能です。

mydomain.com
fr.mydomain.com
de.mydomain.com
da.mydomain.com
...
于 2011-05-21T06:22:03.757 に答える
1

異なるドメイン間で Cookie を直接共有することはできません。しかし、状況によってはそれを可能にする方法が 1 つあります。JSONP リクエストを作成したり、JS で iframe をロードしたりできます。iframe を使用する場合は、フォームを使用して http POST 呼び出しを行います。フォームタグには、アクションとして別のドメイン名があり、ターゲットとして iframe 名があります。フォームが行うことは、iframe をロードし、別のドメインの Cookie がブラウザに送信されることです。

コード:

<iframe name="iframe-test" border="1px"></iframe>

<form id="iframe-form" target="iframe-test" action="http://differentdomain.com/setCookie" method="POST">
     <input type="hidden" value="1234" name="token">
   </form>

    <script type="text/javascript">
        function submitForm(){          
            var form = document.getElementById("iframe-form");
            form.submit();              
        }
    </script>
于 2011-09-29T05:00:02.367 に答える
0

Oded が述べているように、異なるトップ レベル ドメイン間で Cookie を共有することはできません。したがって、セッションを永続化する別の方法を検討する必要がある場合があります。

danyolgiax が提案するようにセッション状態プロバイダーを交換しても、セッション識別はまだ Cookie で行われているため、問題は解決しません。したがって、Cookie を使用しないセッションなどのアプローチを検討する必要があります。

クッキーレスセッション

次に、サーバー上のデータベースまたは InProc セッションにデータを保存することを選択できます。Cookie への依存を削除したら。

編集

さらに、Cookie の存在が絶対に必要な非認証 Cookie を使用するクライアント側のアクティビティの場合、これらのサーバー/セッションに保存された値に基づいて、それぞれの異なるドメインからそれらを書き込むことになります。そのため、ユーザーがドメインを切り替えると、最終的に各ドメインの Cookie が取得されます。

于 2011-05-21T14:05:46.447 に答える
-2

SQL Server を使用している場合は、セッション状態プロバイダーとして使用できると思います。

web.config:

<sessionState 
        mode="SQLServer"
        sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
        cookieless="false" 
        timeout="20" 
/>

ここにいくつかのドキュメントがあります:

http://msdn.microsoft.com/en-us/library/ms178581.aspx

于 2011-05-21T06:26:42.043 に答える