2011-05-18 188 views
0

我刚刚遇到了一个需要花费一点时间才能弄清楚的问题,并且想要为可能存在相同问题的其他人记录该问题。谷歌浏览器和Response.RedirectPermanent

我们的网站可以在不同的国家使用,所以我们有一个看起来像这样的网址:

http://www.example.com/ 
http://www.example.com/CA 
http://www.example.com/UK 

首先自动进入美国。我们使用Cookie来记住他们的国家,以便稍后他们返回网站时(http://www.example.com),我们将其重定向到(http://www.example.com/CA)

当有人想要回到美国版本时,他们点击一个像这样的链接(http://www.example.com/US),它设置了他们的cookie并重定向回主站点,因为美国站点通常不会有国家代码。

在做这些重定向,我们会做以下,如果他们点击/ US链接:

SetCookie("US"); 
Response.RedirectPermanent("/"); 

当他们切换到加拿大(其中工作),然后问题就来试图切换回美国。下面回答。

回答

1

Google Chrome出现问题。因为我们使用了永久重定向,它甚至不会将http://www.example.com/US发送到浏览器。它基本上说:

哦,他们告诉我最后一次/美国是一个 永久重定向到/所以我就 请求/不发送/美国对 浏览器。

所以修复是使用Response.Redirect(302)代替的Response.RedirectPermanent(301)。

+0

顺便说一下,我认为这将是任何框架的问题,而不仅仅是asp.net。可能任何时候301重定向完成。 – 2011-05-18 19:55:19