我在我的asp.net应用程序中使用server.transfer()方法来重定向响应。但我遇到的问题是它在浏览器网址栏上设置了上一页网址(从中生成页面的原始请求)。我想在浏览器中更改网址。它甚至可能吗?
我调查了它,我知道Request有一个url属性但是只读它。有没有人知道改变请求中网址的方法?
答案 0 :(得分:4)
使用Response.Redirect();
代替server.transfer();
,并在浏览器中重定向。
如果你做不到,你可以使用pushState(至少where it's aviable)来更改网址,但这似乎有点过分......
最好的方法显然是改变
server.transfer();
到
Response.Redirect();
修改强>
因为你想获得最大的性能,你可以使用带有两个参数的Response.Redirect,并将第二个设置为true。
所以而不是
server.transfer(url);
你应该
到
Response.Redirect(url, true);
这会导致当前请求中止并强制立即重定向。
答案 1 :(得分:0)
您无法更改当前请求的Url,因为它已在运行。
我想你想做一个重定向。
Redirect方法使浏览器将客户端重定向到其他URL。
Response.Redirect("<theNewUrl>");
如果您想在不进行请求的情况下更改浏览器地址栏中的URL,请阅读:
Can I change the URL string in the address bar using javascript
答案 2 :(得分:0)
Server.Transfer()
只是更改您发回的内容。
Response.Redirect()
是告诉浏览器转到新页面所需的内容
您无法更改请求的网址 - 这没有任何意义,网址是您的客户端(浏览器)所要求的。
答案 3 :(得分:0)
不,您不能像这样更改浏览器中的URL。如果你能够做到这一点,这将是一个相当大的安全漏洞。 http://EvilDomain.com
能够无缝地伪装成http://YourOnlineBank.com
而且没有人会更聪明。