尝试找出获取用户来自MVC3的网页的最佳方式。
我正在构建一个下载文件功能,如果用户没有链接到我自己网站上的文件,我想将它们重定向到我选择的页面。
我基本上想阻止人们直接链接到我的文件而不先通过我的网站。
我如何以最可靠的方式做到这一点?
答案 0 :(得分:3)
超级简单的方法(大部分时间都可以工作),就是看一下控制器中的Request.UrlReferrer
。这应该包含访问者来自的URL。
答案 1 :(得分:1)
MVC3仍然以ASP.NET为基础。所以你也可以使用ASP.NET的所有功能......
另一种方法是使用IIS-Extension => https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1288(微软的LeechGuard)
答案 2 :(得分:0)
这就是我现在解决的问题。 如果页面中有文件请求,则显示有关该文件的信息。要下载该文件,用户单击指向同一页面的链接。
当代码检测到用户正在从文件自己的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;
}