UrlReferrer - 需要找出它的来源

时间:2011-07-20 22:14:56

标签: c# asp.net

我需要找出请求来自哪个页面。例如,我在页面A中有一个按钮,当点击它时,它重定向如下

http://...../ClientName/names.aspx?nameId=4,

Page A's

URL = "http://...../Maintenance/names.aspx?nameId=4"

在页面B中,我希望能够确定它是否来自Page A.请注意,页面A和页面B具有相同的结尾但位于不同的文件夹中......如何在页面B中知道它是否来自维护文件夹中的names.aspx?

谢谢

3 个答案:

答案 0 :(得分:4)

一个提示:URL Referrer由浏览器发送(请求标头)。但这不可靠,因为(例如)安全工具可能会将其从请求中删除,就像一些代理一样。我在几年前就使用过相同的概念,但后来由于这个原因失败了。

示例:http://darklaunch.com/2011/05/07/chrome-disable-referer-headers

另一方面,如果您可以依赖推荐人 - 例如因为你在内联网,所以继续 - 因为FT / Kuru说使用HttpContext.Current.Request.UrlReferrer。非常容易使用。

我们后来在应用程序级别解决了这个问题:

  1. 为不同的HTML表单提供不同的逻辑名称
  2. 您可以使用隐藏的表单字段以
  3. 的形式获得额外信息

答案 1 :(得分:1)

string myFileName = string.Empty;
System.IO.FileInfo PageFileInfo = new System.IO.FileInfo(Request.UrlReferrer);
myFileName = PageFileInfo.Name;
return myFileName;
BTW - 这可能不是最好的安全方法等,因为UrlReferrers很容易被欺骗。

答案 2 :(得分:0)

您可以使用HttpContext.Current.Request.UrlReferrer来确定引荐来源。然后你必须使用RegEx来确定它是你想要的页面(取决于你的应用程序的工作方式)或String.SubString()来确定它。