【问题标题】:Is it possible to check if a request was made from IMG tag?是否可以检查是否来自 IMG 标签的请求?
【发布时间】:2011-04-19 02:17:58
【问题描述】:

我在http://example/image.png 有一个 ActionResult

有没有办法确定 URL 是否被请求

<img src="http://example/image.png" />

或者是从

打开的
<a href="http://example/image.png" target="_blank" />

?

所以我可以用...控制结果

public ActionResult ViewPhoto()
{
    if (<img src />)
    {
        return File();
    }
    else
    {
        return View();
    }
}

【问题讨论】:

  • 如果你想要不同的结果,那么也许你应该使用不同的图像?否则会产生无法维护的代码(谁会在多年后查看您的代码时知道您做了这么奇怪的事情)?

标签: c# asp.net-mvc asp.net-mvc-3 view request-headers


【解决方案1】:

不,没有办法知道问题中的格式。如果您拥有链接来自的站点,那么我建议您在查询字符串上附加一些内容以帮助您的服务器端处理。

【讨论】:

    【解决方案2】:

    您可以检查Request.Headers["Accept"] 是否不包含字符串"html"。

    【讨论】:

      【解决方案3】:

      如果这是一个网页,我认为您可以根据需要尝试使用Request.UrlReferrer 或ServerVariables["HTTP_REFERER"]。前者返回一个URI对象,后者返回字符串。

      但前提是你已经到了 ActionResult ViewPhoto() 方法

      【讨论】:

      • 我从&lt;a target="_blank" ... 得到了相同的referer,这就是我发布这个例子的原因......
      • oic,错过了,在那种情况下,您如何处理您的图像?处理网络,我相信你了解查询字符串。例如,在 'image.png&location=blank' 中。因此,在您的 viewPhoto 方法中,您将获取位置的查询字符串。试试看有没有帮助
      【解决方案4】:

      你可以在图片上放一个 GET 参数,比如

      <img src="http://example/image.png?x=view" />
      

      和

      <a href="http://example/image.png?x=file" target="_blank" /> 
      

      这对你有用吗?

      【讨论】:

      • 我无法控制代码。用户可以更改/删除参数。
      猜你喜欢
      • 1970-01-01
      • 2016-02-15
      • 2023-02-14
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      相关资源
      最近更新 更多