c# - Request.UrlReferrer 为空?

标签 c# .net visual-studio visual-studio-2008

在 aspx C#.NET 页面中(我正在运行框架 v3.5),我需要知道用户来自哪里,因为他们无法在不登录的情况下查看页面。如果我有页面 A (用户要查看的页面)重定向到页面B(登录页面),Request.UrlReferrer 对象为空。

背景:如果用户未登录,我将重定向到登录页面(在这种情况下为 B)。登录后,我想将他们返回到他们在被迫登录之前请求的页面。

更新:
一个不错的快速解决方案似乎是:
//如果用户没有登录 Response.Redirect("..MyLoginPage.aspx?returnUrl="+ Request.ServerVariables["SCRIPT_NAME"]);
然后,只需查看您强制他们访问的登录页面上的 QueryString,并将用户放在成功登录后的位置。

最佳答案

UrlReferrer 基于 HTTP_REFERER浏览器应该发送的 header 。但是,与留给客户的所有事情一样,它是可变的。

我知道一些“安全”套件(如 Norton 的 Internet Security)会删除该 header ,相信它有助于跟踪用户行为。另外,我确信有一些 Firefox 扩展可以做同样的事情。

底线是您不应该相信它。只需将 url 附加到 GET 字符串并基于该字符串进行重定向。

更新:如评论中所述,将 GET 参数的重定向限制为仅适用于无域相对链接、拒绝目录模式 (../) 等可能是个好主意。所以仍然进行完整性检查重定向;如果您遵循标准“不要盲目地使用任何用户提供的输入”规则,您应该是安全的。

关于c# - Request.UrlReferrer 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149130/

相关文章:

visual-studio - VS 2008 IDE 是用什么编写的?

visual-studio - 如何在 Visual Studio 团队版中按个人请求查看负载测试报告

c++ - 根据 Visual Studio 中的调试/发布配置自动#defines

c# - 更改源后 ICollectionView 排序不起作用

c# - 从 url 下载和读取图像

c# - CRM 文件附件

c# - 有效处理 C# 方法中的单个值和多个值

c# - datagridview 行点击

c# - ASP.NET Health Monitoring or ELMAH 选什么?

c# - 如何使用 wait 或 thread 等到事件发生