是否可以检查是否来自 IMG 标签的请求?

Posted

技术标签:

【中文标题】是否可以检查是否来自 IMG 标签的请求?【英文标题】:Is it possible to check if a request was made from IMG tag? 【发布时间】: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();
    

【问题讨论】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

如果这是一个网页,我认为您可以根据需要尝试使用Request.UrlReferrerServerVariables["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" /> 

这对你有用吗?

【讨论】:

我无法控制代码。用户可以更改/删除参数。

以上是关于是否可以检查是否来自 IMG 标签的请求?的主要内容,如果未能解决你的问题,请参考以下文章

服务器可以检查请求是不是来自 iframe (Node.js)?

是否可以伪造请求的域来自?

使用 servlet/jsp 检查 HTTP 请求是不是来自 Android 手机

跨域 img 设置 cookie

前端02

是否应该避免嵌套锁定请求?