【发布时间】:2012-04-16 08:27:41
【问题描述】:
我有一个仅支持 Chrome、Firefox 和 Safari 的网络应用程序。有很多方法可以阻止浏览器。我想看看确保只授予这些浏览器访问权限的最佳最有效方式。
谢谢
【问题讨论】:
-
选择一个。如果有效,那就太好了。
标签: javascript jquery cross-browser
我有一个仅支持 Chrome、Firefox 和 Safari 的网络应用程序。有很多方法可以阻止浏览器。我想看看确保只授予这些浏览器访问权限的最佳最有效方式。
谢谢
【问题讨论】:
标签: javascript jquery cross-browser
我创建了一个页面:allowed.php
<?php
$browser = 'Crap';
if( preg_match("/firefox/i",getenv("HTTP_USER_AGENT")) && preg_match("/firefox/i",$_SERVER['HTTP_USER_AGENT']) ){
$browser = 'Firefox';
}
if( preg_match("/chrome/i",getenv("HTTP_USER_AGENT")) && preg_match("/chrome/i",$_SERVER['HTTP_USER_AGENT']) ){
$browser = 'Chrome';
}
switch( $browser ){
case 'Firefox':
// allowed
break;
case 'Chrome':
// allowed
break;
default:
Header("Location: rejects.html");
exit();
}
//
拒绝页面:rejects.html
<!DOCTYPE html>
<html lang="en">
<head><title>Browser Rejects</title>
<meta charset="utf-8"/>
<style type="text/css">
html {
margin:0px; width:100%; height:100%;
}
body {
margin:0px; width:100%; height:100%;
}
.div-center { position:absolute;
margin:10% 20% auto 20%; padding:2%;
border:1px solid #AAA; border-radius:10px;
}
</style>
</head>
<body>
<div class="div-center">
When your Browser(or the Idiots that make it) learn(s) to abide to Standards set by Society(e.g. W3C),<br>
We will then allow your Browser to be used on Our Sites.<br>
<br>
Until then, Please use a Real Web Browser like Firefox or Chrome.<br>
Thank You and have a Great Day !
</div>
</body>
</html>
我将它们都放在特定网络的基础上,只使用include allowed.php,过滤掉垃圾浏览器......
~ SpaceCorp 创新技术
【讨论】:
如果您知道您需要的特定功能在 IE 中不可用,那么检测功能强大的浏览器的最佳方法是进行功能测试以查看这些功能是否可用。此方法不可欺骗,如果 IE 在未来某个时间点开始支持这些功能,您的应用将开始在那里工作。
由于您使用的是 jQuery,因此您可以查看 jQuery.support 以查看它已经为您呈现的所有特征检测属性。
如果您不想使用特征检测方式并且想要检测浏览器系列,则可以使用任何一种浏览器检测方法。最常见的是只查看用户代理字符串。您应该意识到用户代理字符串在许多环境中是可设置或可欺骗的,因此它不是浏览器引擎的决定性指标。对于普通用户来说,它可能是准确的,但可能会被弄乱。
这是一段来自 Microsoft 的用于检测 IE 和各种版本的 IE 的代码:http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx。
【讨论】:
我还建议使用modernizr 来检测浏览器功能。
【讨论】:
这通常涉及检查正在使用您的网络应用程序的访问者的用户代理,并阻止对您不想使用的用户代理的访问。您可以检查 JavaScript 中的用户代理(仅当用户启用了 JavaScript 时才有效)。查看此页面以获取有关您可以使用 JavaScript 检查的用户代理属性的信息:navigator.userAgent Property。或者,您可以使用 PHP 之类的东西检查此服务器端。查看this page 以获取有关通过 PHP 访问用户的用户代理的更多信息。您将检查用户代理是否包含字符串“MSIE”或其他方式(例如,检查它是否包含 Gecko(对于使用 firefox 渲染引擎的浏览器)或用于 Chrome 和 Safari 的 WebKit。
【讨论】:
解析 UA 字符串并拒绝通过 apache、js、php 等进行访问。 但是,您无法确保标记为“firefox”的内容实际上是 firefox - UA 标头可能包含您喜欢的任何内容。
另一种方法是像在常见 js 框架中使用的那样进行功能测试。但是请记住,如果您的客户端的 js 被禁用,这将不起作用。
【讨论】: