Как поделиться сеансом среди нескольких доменов на веб-сайте One Asp.net?

StackOverflow https://stackoverflow.com/questions/6080017

Вопрос

Я хочу поделиться сеансом 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, но по этому сеансу перестал работать.

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

Это было полезно?

Решение

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

Это возможно только с субдомены .

mydomain.com
fr.mydomain.com
de.mydomain.com
da.mydomain.com
...
.

Другие советы

Вы не можете использовать печенье между различным доменом напрямую.Но есть один способ сделать это возможным в некотором контексте.Вы можете сделать запрос JSONP или загрузка iFrame в JS.Если вы используете Iframe, сделайте HTTP Post Call с использованием формы.Тег формы имеет ваше другое доменное имя как действие и имя 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>
.

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

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

Сеансы cookieles < / P >.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top