http重定向问题

据我所知,我们可以使用两种方法来重定向http响应。

  1. 使用Java脚本window.location;
  2. 在ASP.Net中使用HttpContext.Current.Response.Redirect

从function和最终用户的角度来看,这两种方法是否可以互换?

window.location需要javascript和浏览器在页面更改之前首先下载并呈现原始页面的内容(包括css / scripts)。

另一方面, Response.Redirect使用Location标头发出302状态代码。 这使浏览器立即请求下一页而不先下载/渲染原始页面。

根据您的其他问题 ,值得注意的是window.location具有在位置更改之前能够执行其他javascript的好处。 例如,同时更改另一帧的位置和当前帧。

我不熟悉HttpContext.Current.Response.Redirect ,但我想它会发出HTTP 301响应或类似的东西。

HTTP响应代码始终是首选,因为它们内置于HTTP。 每个人都理解他们,他们总是工作。 搜索引擎和其他自动化应用程序也会尊重它们。

另一方面,Javascript方法并不总是有效并且是非标准的。

此外,使用HTTP代码,传输的数据保持最小,而Javascript方法总是需要加载整个页面。

编辑:举例说明:

这是所有需要传输的HTTP重定向才能工作的标准HTTP标头:

 HTTP/1.1 301 Moved Permanently Location: http://somenewlocation.com/ 

对于Javascript,它更像是这样的:

 HTTP/1.1 200 OK Date: Wed, 22 Jul 2009 07:56:14 GMT Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM" Transfer-Encoding: chunked Content-Type: text/html         

需要传输评估完整的HTML文档,这将花费更长的时间,除了精通Javascript的浏览器之外,不会被任何理解。