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

我应该如何解决这个问题?过去一个月它一直困扰着我。

Request.UrlReferrer在IE7中不起作用

我绝对建议您不要将逻辑建立在请求信息的基础上(不再是用户输入的值)。问题是它在不同的浏览器之间会有不同,而且它真的很容易被破解。

如果您仍然需要将信息从客户端传递到服务器,请确保对这些信息进行了验证。如果你需要这些信息保持同步并获得有效信息,不要依赖浏览器给你的信息,而是自己设置,然后从你设置的请求中的某个位置获取(例如,隐藏输入、控件、视图状态上的变量,或任何允许你使用的技术)。

大多数网站通过在URL本身的查询参数中传递目标URL来处理您试图解决的情况。例如:

http://www.example.com/Login.aspx?returnUrl=/TEST/content.htm

编辑:我确实意识到,无论如何,你发送到客户端的所有内容都是非常容易被黑客攻击的,但如果你自己设置,你会更容易验证它是否被篡改。ViewState验证方法就是一个例子。