如何设置网站仅允许EDGE和SAFARI浏览器访问?
仅允许Edge和Safari浏览器访问网站的实现方案
前端JavaScript检测(基础拦截)
这种方式属于客户端侧的初步筛选,虽可被技术用户绕过,但能阻挡大部分普通非授权访问。核心逻辑是解析浏览器的User-Agent字符串,识别目标浏览器:
const userAgent = navigator.userAgent; // 匹配Edge(含Chromium版)和Safari const isEdge = /Edg/i.test(userAgent) || /Edge/i.test(userAgent); // Safari的UA含Safari字段,但Chrome也会包含,需排除Chrome和Edge const isSafari = /Safari/i.test(userAgent) && !/Chrome/i.test(userAgent) && !/Edg/i.test(userAgent); if (!isEdge && !isSafari) { document.body.innerHTML = ` <div style="text-align:center; padding:50px; font-family:Arial;"> <h2>抱歉,本网站仅支持Edge和Safari浏览器访问</h2> <p>请切换至Edge或Safari浏览器打开页面</p> </div> `; }
后端语言检测(更可靠)
后端直接读取请求头中的User-Agent进行判断,不会被前端篡改,安全性更高。
PHP示例
<?php $userAgent = $_SERVER['HTTP_USER_AGENT']; $isEdge = preg_match('/Edg/i', $userAgent) || preg_match('/Edge/i', $userAgent); $isSafari = preg_match('/Safari/i', $userAgent) && !preg_match('/Chrome/i', $userAgent) && !preg_match('/Edg/i', $userAgent); if (!$isEdge && !$isSafari) { http_response_code(403); echo '<h2>抱歉,本网站仅支持Edge和Safari浏览器访问</h2>'; exit; } ?>
Node.js(Express框架)示例
const express = require('express'); const app = express(); // 全局中间件检测浏览器 app.use((req, res, next) => { const userAgent = req.get('User-Agent'); const isEdge = /Edg/i.test(userAgent) || /Edge/i.test(userAgent); const isSafari = /Safari/i.test(userAgent) && !/Chrome/i.test(userAgent) && !/Edg/i.test(userAgent); if (!isEdge && !isSafari) { res.status(403).send('<h2>抱歉,本网站仅支持Edge和Safari浏览器访问</h2>'); return; } next(); }); // 业务路由示例 app.get('/', (req, res) => { res.send('欢迎访问!'); }); app.listen(3000, () => { console.log('服务器运行在端口3000'); });
服务器层面拦截(最高效)
直接在Web服务器配置中过滤请求,无需经过应用程序处理,性能最优。
Nginx配置
在网站的server或location配置块中添加:
# 先排除Chrome(UA含Safari但属于非目标浏览器) if ($http_user_agent ~* "Chrome") { return 403; } # 仅允许Edge和Safari浏览器 if ($http_user_agent !~* "(Edg|Edge|Safari)") { return 403; }
Apache配置
在.htaccess或虚拟主机配置中添加:
RewriteEngine On # 排除Chrome浏览器 RewriteCond %{HTTP_USER_AGENT} Chrome [NC] RewriteRule ^ - [R=403,L] # 拦截所有非Edge/Safari的请求 RewriteCond %{HTTP_USER_AGENT} !(Edg|Edge|Safari) [NC] RewriteRule ^ - [R=403,L]
注意事项
User-Agent字符串可被伪造,无法实现100%拦截技术型用户,但足以满足绝大多数场景需求。- 优先选择后端或服务器层面的检测方案,安全性和可靠性远高于前端检测。
内容的提问来源于stack exchange,提问作者High Chief
相关产品推荐
相关产品推荐

