首先请看我之前提过的问题,Cookie跨域共享:
http://community.csdn.net/Expert/TopicView.asp?id=3399813简要地说,我们的系统由5台Web server组成一个farm,拥有6个不同的域名,在这些域名下共享相同的web application。由于我们需要使用cookie识别用户身份,而cookie又不能跨域传递,我们最终选择了使用一个中央域名作为默认cookie解析服务器,访问其他域名的时候,请求会被转向到默认服务器,去读取cookie,然后把用户ID附加到URL中作为query string重新转向到起始服务器,这样起始服务器就可以通过query string取得原先在cookie中的内容。
这个解决方案工作的很好,但是今天遇到一个需求,我们要在新的partner(google.com)投放我们的链接,但是google要求比较严格:从google点击链接进入我们的站点,用户必须能够在我们站点的第一页上点浏览器后退按钮退回到google。但是问题在于我们的系统会在从google进入后执行2次redirect,导致无法直接按后退按钮回去(当然如果你飞快的连续点,或者从历史列表里面直接选后退几步,是可以回去的,但google不认可这种方式)。我没有想出什么好的办法来解决这个问题,因此来集思广益,希望大家提供好的思路或者解决方案。另外,我们需要支持多种浏览器(IE 5.5+/NS6+/Mozilla/FireFox),IE Only的方案是行不通的。欢迎大家讨论,分不够可以再加。

解决方案 »

  1.   

    你试试看用
    Server.Execute("要转向的地址")这样不论你转几次都不会有历史记录的,但也不知道与的的系统合不合用
      

  2.   

    To viscoo(冠达) :Server.Execute() or Server.Transfer()只能在服务器内部进行ASP.NET页面请求重定向,不支持第3方web页重定向。
      

  3.   

    你的中央认证服务器的目的是?当用户从GOOGLE按连接到你的某个网站时,一定需要马上认证么?是不是可以在需要认证时才定向到认证服务器呢?我的意思是,当用户从GOOGLE按连接到你的某个网站时,先留在当前网站,这样按后退键应该能回到GOOGLE,只有当用户需要访问某些受保护的资源时,才做认证同时参考我blog里的连接
    http://blog.joycode.com/saucer/archive/2004/02/25/13789.aspx
      

  4.   

    再给你个页看看,可能对你有用,这个是用代码清空历史记录的方法,
    http://art.showyou.net/View/3614.htm
    你可以清了只留一个google.com的,不知道行不行,没试过,希望对你有用
      

  5.   

    又有朋友介绍了我个页
    http://www.zahui.com/html/4/38194.htm
    后来我又看到有人建议用location.replace从一个
    页面转到另一个页面。这种方法的原理是,用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后
    退按钮永远不会变为可用。我想这可能正是许多人所寻求的方法,但这种方法仍旧不是任何情况下的最好方法。使用这种
    方法的实例如下所示:  <A HREF="PageName.htm" onclick="javascript:location.replace(this.href); event.returnValue=false; "> 禁止后退到本页面的链接</A>      试试下面这个链接:    禁止后退到本页面的链接!    这种方法的缺点在于:简单地运用Response.Redirect将不再有效,这是因为每次用户从一个页面转到另一个页面,
    我们都必须用客户端代码清除location.history。另外还要注意,这种方法清除的是最后一个访问历史记录,而不是全部
    的访问记录。 
      

  6.   

    To saucer(思归):
    是的,一定要立即认证。出于商业原因我们不能使用Passport认证方式,我们有自己的cookie机制To  viscoo(冠达):
    谢谢你的代码,这个只能在客户端本地执行,不适用于Web应用程序
      

  7.   

    你也许误解了,我blog里的内容不完全是用PASSPORT,而是怎么做类似自己的认证服务器的机制你不想那么做的话,大概你只能在服务器端向你的中央服务器发出HttpWebRequest/HttpWebResponse或在你的中央服务器做一个认证web service....
      

  8.   

    这样吧,先把问题弄简单一点,不要求一下子支持多种浏览器,先从IE开始。
    =============by the way, 思归现在在哪里?在国内还是在国外?我在New York city,如果你也在的话就好了,呵呵
      

  9.   

    ok,感谢viscoo(冠达)提供的连接http://www.zahui.com/html/4/38194.htm,我变化了一下它的用法,当重定向的时候,不使用
    window.location = "xxx";
    而是使用
    window.location.replace("xxx");
    这样会产生不同的http请求,后者会保持history列表不发生变化,呵呵。就这么简单。结帖!