Как поделиться сеансом среди нескольких доменов на веб-сайте One Asp.net?
-
08-09-2020 - |
Вопрос
Я хочу поделиться сеансом 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"
/>
.
Вот какой-то док: