我有基于nodejs的新闻网站。我在res.end(数据)之前和之后添加了日志,并向用户提供了一个普通的html文件。我正在服务的html数据的一部分,我正在加载一个隐藏的图像(尝试在头部和身体)和记录隐藏图像的加载。
现在我的问题是我看到有很多请求来参考m.facebook.com,它显示了服务于请求的nodejs的日志,但隐藏的图像加载没有被记录(未被调用)。
我尝试过的事情:
要消除这些请求可能是facebook抓取工具,我在客户端添加了一个cookie,我可以看到cookie正在未加载隐藏图像的请求中。
res代码是:
profileLogger.logDetails(req,"static-callingRender",{"url":req.pathname,"user agent":req.headers["user-agent"],"requestId":req.environment.requestId,"isBot":isBot,"ip":ip,"isold":isOldUser,"referer":referer});
var renderUrl = "partners/"+req.partner+"/"+props.template;
res.render(renderUrl, {
data : dataV
}, function(err, html) {
if (err) {
logger.error('in index file', err.message);
return next(err);
}
profileLogger.logDetails(req,"static-rendering",{"url":req.pathname,"user agent":req.headers["user-agent"],"requestId":req.environment.requestId,"isBot":isBot,"ip":ip,"isold":isOldUser,"referer":referer});
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(html);
profileLogger.logDetails(req,"static-complete-rendering",{"url":req.pathname,"user agent":req.headers["user-agent"],"requestId":req.environment.requestId,"isBot":isBot,"ip":ip,"isold":isOldUser,"referer":referer});
});
return;
}
在nodejs服务端添加的所有日志即将到来,但隐藏的图像加载日志不会到来。
这种情况只发生在facebook引用网址m.facebook.com上,仅适用于网页浏览,因为这些请求的用户代理就像
Mozilla / 5.0(Linux; U; Android 4.2.2; zh-gb; GT-I9060 Build / JDQ39)AppleWebKit / 534.30(KHTML,类似Gecko)版本/ 4.0 Mobile Safari / 534.30 [FB_IAB / FB4A; FBAV / 86.0.0.19.69;]
我们一直在努力,并且无法理解什么是错误的,因为所有用户都不会出现问题,因为m.facebook.com是针对某些用户的特定用户。