2

试图找出在 MVC3 中获取用户来自的网页的最佳方法。

我正在构建一个下载文件功能,如果用户没有从我自己的网站链接到该文件,我想将他们重定向到我选择的页面。

我基本上想阻止人们直接链接到我的文件而不先通过我的网站。

我将如何以最可靠的方式做到这一点?

4

3 回答 3

3

超级简单的方法(大多数情况下都可以)是Request.UrlReferrer在你的控制器中查看。这应该包含访问者来自的 URL。

于 2012-07-20T09:15:08.370 回答
1

MVC3 仍然以 ASP.NET 为基础。因此,您也可以使用 ASP.NET 的所有功能......

另一种方法是使用 IIS-Extension => https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1288(来自 Microsoft 的 LeechGuard)

于 2012-07-20T09:10:40.247 回答
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;
    }
于 2012-07-20T12:00:52.613 回答