Request.UrlReferrer在IE7中不起作用
本文关键字:不起作用 IE7 UrlReferrer Request | 更新日期: 2023-09-27 18:20:10
我有以下代码:
if (Request.UrlReferrer != null)
{
if (Request.UrlReferrer.PathAndQuery.ToLowerInvariant() == "/test/content.htm")
{
postbacklink = Request.UrlReferrer.AbsoluteUri.Replace("/TEST/Content.htm", "/Testing.aspx?") + Request.QueryString;
}
else
{
postbacklink = Request.UrlReferrer.AbsoluteUri;
}
}
ExtendedLoanView.PostbackLink = postbacklink;
现在可以通过两个不同的位置访问此页面。这意味着这个代码:
postbacklink = Request.UrlReferrer.AbsoluteUri.Replace("/TEST/Content.htm", "/Test.aspx?") + Request.QueryString;
只能使用一个页面(Test.aspx),并且是硬编码的。因此,在IE7 Request.UrlReferrer中,我看到了以下内容:
Request.UrlReferrer = {http://Testing:12345/PPP/Content.htm}
而在IE8+中,我得到了这个值:
Request.UrlReferrer = {http://Testing:12345/PPP/TestingPage.aspx?Name=Xyz&Address=123 YYY
我应该如何解决这个问题?过去一个月它一直困扰着我。
我绝对建议您不要将逻辑建立在请求信息的基础上(不再是用户输入的值)。问题是它在不同的浏览器之间会有不同,而且它真的很容易被破解。
如果您仍然需要将信息从客户端传递到服务器,请确保对这些信息进行了验证。如果你需要这些信息保持同步并获得有效信息,不要依赖浏览器给你的信息,而是自己设置,然后从你设置的请求中的某个位置获取(例如,隐藏输入、控件、视图状态上的变量,或任何允许你使用的技术)。
大多数网站通过在URL本身的查询参数中传递目标URL来处理您试图解决的情况。例如:
http://www.example.com/Login.aspx?returnUrl=/TEST/content.htm
编辑:我确实意识到,无论如何,你发送到客户端的所有内容都是非常容易被黑客攻击的,但如果你自己设置,你会更容易验证它是否被篡改。ViewState验证方法就是一个例子。