【问题标题】:How to change the URL in the browser URL Bar如何更改浏览器 URL 栏中的 URL
【发布时间】:2012-02-17 14:55:04
【问题描述】:

我在我的 asp.net 应用程序中使用 server.transfer() 方法来重定向响应。但是我遇到了一个问题,它在浏览器 url 栏中设置了上一页 url(从那里生成了对页面的原始请求)。我想更改浏览器中的网址。有可能吗??

我查看了它,我知道请求有一个 url 属性,但它是只读的。有谁知道改变请求中的url的方法吗?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

使用Response.Redirect(); 而不是server.transfer();,它会在浏览器中重定向。

如果你不能这样做,你可以使用pushState(至少where it's aviable)来更改网址,但这似乎有点矫枉过正......

最好的办法是明确地改变

  server.transfer();

到

  Response.Redirect();

编辑

如果您想获得最佳性能,您可以使用带有两个参数的 Response.Redirect,并将第二个设置为 true。

所以而不是

  server.transfer(url);

你应该有

到

  Response.Redirect(url, true);

这会导致当前请求中止并强制进行即时重定向。

【讨论】:

  • 非常感谢您的回复,但实际上我想节省额外的往返行程以提高性能,这就是我想使用 server.transfer() 的原因
  • Response.Redirect() 只发送一个HTTP 标头,而且速度非常快。创建一个 JavaScript taht 使用 pushState (w3.org/TR/html5/history.html) (就像我在回答中所说的那样)是可能的(至少在现代浏览器中),但是请求 javascript、修改历史等比简单的 HTTP 请求效率低得多。您必须拥有巨大的 cookie 和极其缓慢的连接才能注意到 Response.Redirect(); 的延迟显着
  • FWIW msdn.microsoft.com/en-us/library/t9dwyts4.aspx 表示将第二个参数设置为 true 是多余的,因为如果省略它就是默认值。
  • 我知道它应该是这样的,但我也有一些情况下它实际上一直在处理页面,并且明确地将参数设置为 true 它按预期工作..
  • Server.Transfer 对Response.Redirect 的性能影响很小,而且在某些情况下确实前者速度较慢(如果您重定向到已经在缓存中的资源,那么只需很小的重定向需求发送)。偏爱一个的原因与性能无关,而与它是否只是服务器在不同情况下(Server.Transfer)或用户处理相同 URI 的一种方便方式有关确实应该发送到另一个页面 (Response.Redirect)。
【解决方案2】:

说明

您无法更改当前请求的 URL,因为它已经在运行。

我想你想做一个重定向。

Redirect 方法使浏览器将客户端重定向到不同的 URL。

示例

Response.Redirect("<theNewUrl>");

更新

如果您想更改浏览器地址栏中的 URL 而无需请求,请阅读以下内容:

Can I change the URL string in the address bar using javascript

更多信息

【讨论】:

  • 感谢您的响应。但不,我使用的是 Response.Redirect() 但为了提高性能,我转移到 server.transfer() 并且因为它将控制权从服务器上的一个页面转移到另一个页面,而无需让客户知道这件事。所以浏览器中的网址不会改变,但我希望能够重写这个网址。
  • 那么您需要使用 javascript 来执行此操作。查看我的答案中的链接。
【解决方案3】:

Server.Transfer() 只是在更改您发回的内容。

Response.Redirect() 是您需要告诉浏览器转到新页面

您无法更改请求的 URL - 这没有任何意义,该 URL 是您的客户端(浏览器)所要求的。

【讨论】:

    【解决方案4】:

    不,您不能这样更改浏览器中的 URL。如果你能够做到这一点,那将是一个相当大的安全漏洞。 http://EvilDomain.com 将能够无缝伪装成 http://YourOnlineBank.com,没有人会比这更聪明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 2016-05-21
      • 1970-01-01
      • 2014-05-01
      • 2017-11-08
      • 2016-10-30
      • 2012-03-18
      • 1970-01-01
      相关资源
      最近更新 更多