Asp.net Google Chrome和Response.com

Asp.net Google Chrome和Response.com,asp.net,google-chrome,Asp.net,Google Chrome,我只是遇到了一个问题,花了一点时间才弄明白,并想为可能有相同问题的其他人记录它 我们的网站可以在不同的国家使用,因此我们有如下URL: http://www.example.com/ http://www.example.com/CA http://www.example.com/UK 第一个自动转到美国。我们使用cookie来记住他们的国家,这样当他们稍后回到网站时(http://www.example.com),我们将它们重定向到(http://www.example.com/CA) 当有

我只是遇到了一个问题,花了一点时间才弄明白,并想为可能有相同问题的其他人记录它

我们的网站可以在不同的国家使用,因此我们有如下URL:

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("/");

问题来了,当他们转到加拿大(这是有效的),然后试图切换回美国。回答如下。

问题来自谷歌浏览器。因为我们使用了永久重定向,它甚至不会发送到浏览器。它基本上说:

哦,上次他们告诉我/我们是 永久重定向到/因此我将 请求/未发送/我们到 浏览器


因此,修复方法是使用Response.Redirect(302)而不是Response.RedirectPermanent(301)

顺便说一下,我认为这对于任何框架都是一个问题,而不仅仅是asp.net。可能在301重定向完成的任何时候。