我在ASP.NET应用程序中的服务器上托管图像。 我编写了一个自定义的http处理程序,它可以调整图像的大小,并在数据库中增加“image_view_count”。
现在,我还想做一些记录以了解图像的使用位置。例如:
图片abc.jpg位于我的服务器上www.myserver.com/stuff/abc.jpg 有人通过将其链接到位于www.forum.com/thread.php?id=1234
的论坛帖子中来使用它。我想在我的http处理程序中检索www.forum.com/thread.php?id=1234网址。当我使用Request.Url.ToString()时,在前面的例子中,我收到www.myserver.com/stuff/abc.jpg。
我该怎么做?托管代码中是否存在与location.href等效的内容?
答案 0 :(得分:3)
我相信您正在寻找Referer
标题。
public void ProcessRequest(HttpContext context)
{
IServiceProvider provider = (IServiceProvider)context;
HttpWorkerRequest worker = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
String referer = worker.GetKnownRequestHeader(HttpWorkerRequest.HeaderReferer);
}
答案 1 :(得分:1)
Request.Url是当前请求的网址 - 即加载图片的请求。
您可以通过查看Referer获得所需内容,但这并不总是可靠的。
答案 2 :(得分:0)
您可以检查引用以查看图像的使用位置: http://en.wikipedia.org/wiki/HTTP_referrer
C#
string referer = Request.UrlReferrer.ToString();
如果浏览器未在请求标头中发送referer,则UrlReferrer可以为null。