Как разделить сессию между несколькими доменами на одном сайте asp.net? - PullRequest
2 голосов
/ 21 мая 2011

Я хочу поделиться сессионными cookie-файлами между доменами.

У меня есть несколько доменов: -

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

Теперь у меня есть один веб-сайт, развернутый насервер. Я хочу поделиться сессией между разными доменами на одном сайте.Как мне этого добиться?

Я нашел в сети <httpCookies domain=".mydomain.com" />, но он работает с поддоменами (например, test.mydomain.com и secure.mydomain.com), но не для разных доменов.

Я также пытался <httpCookies domain=".mydomain." />, но к этому сеансу перестал работать.

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 4 ]

1 голос
/ 29 сентября 2011

Вы не можете совместно использовать cookie-файлы между разными доменами. Но есть один способ сделать это возможным в некотором контексте. Вы можете сделать запрос JSONP или загрузить iframe в свой JS. Если вы используете iframe, сделайте вызов HTTP POST, используя форму. Тэг формы имеет другое имя вашего домена в качестве действия и имя iframe в качестве цели. Форма будет загружать ifram, и в вашем браузере появятся файлы 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>
1 голос
/ 21 мая 2011

Вы не можете поделиться файлами cookie на доменах, которые имеют имя домена верхнего уровня имя.

Это возможно только для поддоменов .

mydomain.com
fr.mydomain.com
de.mydomain.com
da.mydomain.com
...
0 голосов
/ 21 мая 2011

Как заявляет Одед, вы не можете делиться файлами cookie между разными доменами верхнего уровня. Поэтому вам может понадобиться другой способ сохранения сеансов.

Замена поставщика состояния сеанса в соответствии с предложением danyolgiax не решит вашу проблему, так как идентификация сеанса все еще происходит с файлами cookie. Поэтому вам необходимо рассмотреть такой подход, как сеансы без файлов cookie:

Сессии Cookieles

Затем вы можете сохранить данные в сеансе базы данных или InProc на сервере. Как только вы удалили зависимость от куки.

Редактировать

Кроме того, если вы выполняете какие-либо действия на стороне клиента с использованием неавторизованного куки-файла, для которого абсолютно необходимы куки-файлы, вы должны записать их из каждого отдельного домена на основе этих сохраненных значений сервера / сеанса. Таким образом, пользователь, переключающий домены, в конце концов получает cookie для каждого домена.

0 голосов
/ 21 мая 2011

Если вы используете 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...