试图找出在 MVC3 中获取用户来自的网页的最佳方法。
我正在构建一个下载文件功能,如果用户没有从我自己的网站链接到该文件,我想将他们重定向到我选择的页面。
我基本上想阻止人们直接链接到我的文件而不先通过我的网站。
我将如何以最可靠的方式做到这一点?
试图找出在 MVC3 中获取用户来自的网页的最佳方法。
我正在构建一个下载文件功能,如果用户没有从我自己的网站链接到该文件,我想将他们重定向到我选择的页面。
我基本上想阻止人们直接链接到我的文件而不先通过我的网站。
我将如何以最可靠的方式做到这一点?
超级简单的方法(大多数情况下都可以)是Request.UrlReferrer
在你的控制器中查看。这应该包含访问者来自的 URL。
MVC3 仍然以 ASP.NET 为基础。因此,您也可以使用 ASP.NET 的所有功能......
另一种方法是使用 IIS-Extension => https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1288(来自 Microsoft 的 LeechGuard)
这就是我现在解决的方法。如果页面中出现文件请求以显示有关文件的信息,则会显示。要下载文件,用户单击指向同一页面的链接。
当代码检测到用户正在从文件自己的 URL 请求文件时,该文件将提供给用户。
private bool RequestIsCommingFromSamePage()
{
if (Request.UrlReferrer == null)
return false;
string requestURL = Request.UrlReferrer.ToString();
string pageURL = Request.ServerVariables["HTTP_HOST"] + Request.RawUrl;
requestURL = requestURL.Replace("http://", "").Replace("https://", "");
if (requestURL == pageURL || pageURL == null || requestURL == null)
return true;
return false;
}