C# 相对链接自动获取会话ID

C# 相对链接自动获取会话ID,c#,.net,asp.net,session,storage,C#,.net,Asp.net,Session,Storage,由于会话ID插入到当前URL中,相对链接也会自动获取会话ID。换句话说,如果用户当前位于Page1.aspx上,并单击指向Page2.aspx的相对链接,则相对链接将当前会话ID作为URL的一部分。cookieless状态的唯一真正限制是不能使用绝对链接,因为它们不包含会话ID 我不明白为什么相对链接能够获得会话ID,而不是绝对链接 谢谢如果使用无Cookie会话,则会在url中插入会话id,如下所示: http://www.mysite.com/12345/Default.aspx 现在,如

由于会话ID插入到当前URL中,相对链接也会自动获取会话ID。换句话说,如果用户当前位于Page1.aspx上,并单击指向Page2.aspx的相对链接,则相对链接将当前会话ID作为URL的一部分。cookieless状态的唯一真正限制是不能使用绝对链接,因为它们不包含会话ID

我不明白为什么相对链接能够获得会话ID,而不是绝对链接


谢谢

如果使用无Cookie会话,则会在url中插入会话id,如下所示:

http://www.mysite.com/12345/Default.aspx
现在,如果从default.aspx链接到:“”(
),与会话的链接将丢失。如果您使用了“dosomething.aspx”(
)作为链接,浏览器会将其解析为:

http://www.mysite.com/12345/dosomething.aspx

如您所见,sessionid现在已为服务器所知。

如果使用无Cookie会话,则会在url中插入会话id,如下所示:

http://www.mysite.com/12345/Default.aspx
现在,如果从default.aspx链接到:“”(
),与会话的链接将丢失。如果您使用了“dosomething.aspx”(
)作为链接,浏览器会将其解析为:

http://www.mysite.com/12345/dosomething.aspx

如您所见,sessionid现在已为服务器所知。

ASP.NET使用一种技巧来解析URL,以便从客户端的角度来看,它位于同一目录中,因此它将始终保留会话id,而无需您担心更改javascript或外部javascript文件等

例如:

通常URL是“”,但由于web客户端(浏览器)认为会话id是一个目录(/(S(f2rvdgj1bj1nyuzhfeqrveq))/),它会很乐意尝试保持在同一个目录中

通过这种方式,ASP.NET实际上不需要重新分析输出的URL,客户端会自动转发它


如果您希望绝对URL获得会话ID,那么创建一个特殊的锚控件来验证目标URL是否位于应用程序的根目录中,这样您就不会将该会话ID传递给外部应用程序,这应该很简单,ASP.NET使用了一种解析URL的技巧,从客户端的角度来看,URL位于同一目录中,因此它将始终保留会话id,而不必担心更改javascript或外部javascript文件等

例如:

通常URL是“”,但由于web客户端(浏览器)认为会话id是一个目录(/(S(f2rvdgj1bj1nyuzhfeqrveq))/),它会很乐意尝试保持在同一个目录中

通过这种方式,ASP.NET实际上不需要重新分析输出的URL,客户端会自动转发它


如果您希望绝对URL获得会话ID,那么创建一个特殊的锚控件来验证目标URL是否位于应用程序的根目录中,这样您就不会将该会话ID传递给外部应用程序,这应该很简单,谁也不知道该怎么办。

这句话的来源是什么?Matthew MAcDonald的《2008年C#2008》中的Pro ASP>NET 3.5 Matthew MAcDonald似乎不太专业,毕竟。或者我不是:-)我学到了一些东西,这是因为GvS这句话的来源是什么?马修·麦克唐纳的《C#2008》中的Pro ASP>NET3.5。马修·麦克唐纳看起来毕竟不是一个很专业的人。或者我不是:-)我学到了一些东西,感谢GvS