Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在单个asp.net网站上的多个域之间共享会话?_Asp.net_Session Cookies_Multiple Domains_Website Deployment - Fatal编程技术网

如何在单个asp.net网站上的多个域之间共享会话?

如何在单个asp.net网站上的多个域之间共享会话?,asp.net,session-cookies,multiple-domains,website-deployment,Asp.net,Session Cookies,Multiple Domains,Website Deployment,我想在域之间共享会话cookie。 我有多个域:- 1. mydomain.com 2. mydomain.fr 3. mydomain.de 4. mydomain.da ...and many other language based 现在,我在服务器上部署了一个网站我想在单个网站上的不同域之间共享会话。我如何做到这一点? 我在web上找到了,但它可以用于子域(如test.mydomain.com和secure.mydomain.com),但不适用于不同的域 我也尝试了,但在这个会话中停止

我想在域之间共享会话cookie。

我有多个域:-

1. mydomain.com
2. mydomain.fr
3. mydomain.de
4. mydomain.da
...and many other language based
现在,我在服务器上部署了一个网站我想在单个网站上的不同域之间共享会话。我如何做到这一点?

我在web上找到了
,但它可以用于子域(如
test.mydomain.com
secure.mydomain.com
),但不适用于不同的域

我也尝试了
,但在这个会话中停止了工作


有人能帮我吗?

您不能在具有不同名称的域上共享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" 
/>

以下是一些文件:


如果您使用的是SQL Server,我认为您可以将其用作会话状态提供程序

在web.config中:

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

以下是一些文件:


正如Oded所述,您不能在不同的顶级域之间共享cookie。因此,您可能需要研究另一种持久化会话的方法

按照danyolgiax的建议交换会话状态提供程序不会解决您的问题,因为会话标识仍在cookie中进行。因此,您需要研究一种方法,例如无Cookie会话:

然后,您可以选择将数据存储在服务器上的数据库或InProc会话中。一旦你移除了对cookies的依赖

编辑

此外,如果您使用非身份验证cookie执行某些客户端活动,并且该cookie绝对需要存在,那么您将根据这些服务器/会话存储值从每个不同的域写入这些cookie。因此,用户交换域最终会得到您的
每个域的cookie。

因为Oded声明您不能在不同的顶级域之间共享cookie。因此,您可能需要研究另一种持久化会话的方法

按照danyolgiax的建议交换会话状态提供程序不会解决您的问题,因为会话标识仍在cookie中进行。因此,您需要研究一种方法,例如无Cookie会话:

然后,您可以选择将数据存储在服务器上的数据库或InProc会话中。一旦你移除了对cookies的依赖

编辑

此外,如果您使用非身份验证cookie执行某些客户端活动,并且该cookie绝对需要存在,那么您将根据这些服务器/会话存储值从每个不同的域写入这些cookie。因此,用户交换域最终会得到您的
每个域的cookie。

您不能在不同域之间直接共享cookie。但在某些情况下,有一种方法可以使之成为可能。您可以发出JSONP请求或在JS中加载iframe。如果使用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>

函数submitForm(){
var form=document.getElementById(“iframe表单”);
表单提交();
}

您不能在不同的域之间直接共享cookie。但在某些情况下,有一种方法可以使之成为可能。您可以发出JSONP请求或在JS中加载iframe。如果使用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>

函数submitForm(){
var form=document.getElementById(“iframe表单”);
表单提交();
}

CookieLess session make session id位于查询字符串内,在我当前的项目中不可行。CookieLess session make session id位于查询字符串内,在我当前的项目中不可行。可以使用SqlServer,但问题是SessionID存储在哪里?我认为可以使用session.SessionID属性。使用sessionState mode=“SQLServer”,会话对象将保存到SQLServer,您可以在域之间共享它。但是会话id是cookie的一部分。。sql server只是服务器上会话的存储,但您需要根据随请求一起发送的sessionID检索会话。所以这并没有真正的帮助。可以使用SqlServer,但问题是我在哪里存储SessionID?我想你可以使用Session.SessionID属性。使用sessionState mode=“SqlServer”,会话对象将保存到SqlServer,你可以在域之间共享它。但会话id是cookie的一部分。。sql server只是服务器上会话的存储,但您需要根据随请求一起发送的sessionID检索会话。所以这不会真的有帮助。是的,它起作用了。但是有没有可能在多个域之间共享数据?@Waqas-当然有,使用反向通道(例如,相同的数据库)。是的,它可以工作。但是有没有可能在多个域之间共享数据?@Waqas-当然有,使用反向通道(例如,相同的数据库)。