【发布时间】:2015-08-18 05:51:27
【问题描述】:
我是使用 MEAN-JS 进行 Web 开发的新手,我正在尝试创建多个 iframe 来为不同的 Web 浏览器显示相同的网站(例如,查看 ie7 和 9 之间的区别),所以我 v试图编辑我的用户代理字符串,但这不起作用。
【问题讨论】:
标签: javascript iframe http-headers meanjs
我是使用 MEAN-JS 进行 Web 开发的新手,我正在尝试创建多个 iframe 来为不同的 Web 浏览器显示相同的网站(例如,查看 ie7 和 9 之间的区别),所以我 v试图编辑我的用户代理字符串,但这不起作用。
【问题讨论】:
标签: javascript iframe http-headers meanjs
无法更改浏览器从客户端代码发送的 User-Agent 标头。实现这一目标的唯一方法是通过您的服务器端代码代理请求。您还必须修改任何测试用户代理的 JavaScript(由站点返回)以覆盖它。
但是,更改 User-Agent 标头不会显示网站在不同浏览器中的外观。虽然它可能会导致网站返回稍微不同的 HTML/JS/CSS(但现在可能不会有那么多人使用用户代理检测),但 IE7 和 IE9 是不同的软件,它们以不同的方式解释 HTML/JS/CSS。
测试网站在 IE7 中的外观的唯一方法是在 IE7 中实际打开它。
【讨论】:
是的,可以在服务器端(MEAN-JS 中的 E,N),并且更容易使用request module,您只需在通用路由内的选项对象中指定用户代理字符串即可拦截任何来自您的网站的请求并测试它是对图像(位文件)还是纯文本的请求。
您可以在此链接中找到您想要的用户代理字符串:User Agent String.Com
像这样:
app.get('*', function (req, res){
req.headers["user-agent"] = ‘YOUR USER AGENT STRING’;
var options = {
url: req.path,
headers: {'user-agent':req.headers['user-agent'],
'accept':req.headers.accept,
}
};
if ( /image\//.test(req.headers.accept)){
options.encoding= null;}
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
res.set(
response.headers
);
res.send(body);
}
else {
console.log('request error: ' + JSON.stringify(error));
res.redirect('/');
}
});
});
【讨论】: