通过智能手机或电脑访问时,有些网站会自行安排布局。我想知道它是如何完成的(Javascript?获取浏览器数据?)。我真的很感激一些帮助,我正在学习 JAVA,谢谢。
4 回答
Web 浏览器的每个请求都有代理字符串,其中包含必要的信息。查看此页面以获取代理字符串的描述。http://en.wikipedia.org/wiki/User_agent
浏览器会在每个 GET 请求中发送一个标头,其中包含有关自身的各种信息。有关示例,请参见此处User-Agent
,但您正在谈论的特定信息(浏览器类型)是在该字段中发送的。使用一些 http 客户端库,您可以控制发送的一些字段,以假定其他类型客户端的身份。
这是通过读取用户代理来完成的,通常使用 javascript(在网站上)。
Javascript 示例在这里。
网站通过用户代理字符串识别浏览器。这是告诉站点浏览器类型和版本的唯一标识符。
这可以通过 javascript 在 javascript 中检测到navigator.userAgent
它也作为头字段在Get Request中发送到服务器
例子:
用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5
得到这个的Java Servlet 代码是(更多信息在这里):
public final void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String agent = req.getHeader("user-agent");
if (agent != null && agent.indexOf("MSIE") > -1) {
// Internet Explorer mode
} else {
// Non-Internet Explorer mode
}
}
强制性维基百科参考:
http://en.wikipedia.org/wiki/User_agent
User-Agent 字符串格式目前由 RFC 2616 (HTTP/1.1) 的第 14.43 节指定。HTTP 中 User-Agent 字符串的格式是带有可选注释的产品标记(关键字)列表。例如,如果您的产品名为 WikiBrowser,您的用户代理字符串可能是 WikiBrowser/1.0 Gecko/1.0。首先列出“最重要”的产品组件。该字符串的部分如下:
产品名称和版本 (WikiBrowser/1.0) 布局引擎和版本 (Gecko/1.0)。在这种情况下,这表示布局引擎和版本。不幸的是,在浏览器大战期间,许多 Web 服务器被配置为仅将需要高级功能的网页发送到被标识为某些版本的 Mozilla 的客户端。
出于这个原因,大多数 Web 浏览器使用如下的 User-Agent 值:Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]。例如,iPad 上的 Safari 使用了以下内容:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405 这个字符串的组成部分如下:
Mozilla/5.0:以前用于表示与 Mozilla 渲染引擎的兼容性(iPad;U;CPU OS 3_2_1,如 Mac OS X;en-us):运行浏览器的系统的详细信息 AppleWebKit/531.21.10:平台浏览器使用(KHTML,如 Gecko):浏览器平台详细信息 Mobile/7B405:浏览器使用它来指示可直接在浏览器中或通过第三方获得的特定增强功能。这方面的一个例子是 Microsoft Live Meeting,它注册了一个扩展,以便 Live Meeting 服务知道该软件是否已安装,这意味着它可以为加入会议提供简化的体验。