Request.UrlReferrer注意点

定义:

public sealed class HttpRequest
{
        //
        // 摘要: 
        //     获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL。
        //
        // 返回结果: 
        //     一个 System.Uri 对象。
        //
        // 异常: 
        //   System.UriFormatException:
        //     HTTP Referer 请求标头格式不正确,并且不能被转换为 System.Uri 对象。
        public Uri UrlReferrer { get; }
}

 注意方法注释中的“客户端”。

 

在使用Request.UrlReferrer时要注意: 

1.如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值 
2.如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B 页面,则 Request.UrlReferrer返回空。因为 在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到b页面也就无法获得上一页面的信息 
3.点击刷新按钮不会改变Request.UrlReferrer

 

其中,关于第2点,在Page_Load里方法里执行跳转,因为回发给浏览器的是跳转的目标页(原页面并无回发),所以取不到Request.UrlReferrer。已亲测。

我今天遇到的问题是,上游三方系统调用我的接口a1.ashx,从a1.ashx的ProcessRequest方法里执行Response.Redirect方法跳转到站内的a2.ashx,结果在a2里获取Request.UrlReferrer.Host得到的是上游三方系统的域名。 可见,用上面的第2点可以解释。

转载于:https://www.cnblogs.com/buguge/p/6891084.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值