关于 Yii 2.0 限制浏览器的问题 [ 2.0 版本 ]
请问 Yii 2.0 怎么控制只允许 谷歌 搜狗 浏览器访问,其他浏览器一律禁止访问。
请问怎么写?
共 3 个回答
-
return19931112 回答于 2018-11-26 09:37 举报
根据UserAgent判断浏览器
共 2 条回复return19931112 回复于 2018-11-26 16:43 回复@少年侠气
UserAgent
里面会有具体访问网站的浏览器的版本,你可以用不同的浏览器测试一下,通过strpos
函数简单判断一下 -
要实现只允许特定的浏览器访问Yii 2.0应用程序,可以通过以下步骤进行设置:
在Yii 2.0的配置文件中,打开web组件的配置部分,添加如下代码: ````` 'components' => [ // ... 'request' => [ 'class' => 'yii\web\Request', 'enableCsrfValidation' => true, 'parsers' => [ 'application/json' => 'yii\web\JsonParser', ], 'cookieValidationKey' => 'your-secret-key', 'trustedHosts' => [ // add trusted hosts here '192.168.1.100', 'www.example.com', ], 'headers' => [ 'User-Agent' => [ 'value' => function($request) { return $request->headers->get('User-Agent'); }, 'allowed' => ['Chrome', 'Sogou', 'Googlebot'], 'denyCallback' => function ($request, $response) { $response->setStatusCode(403); return 'Your browser is not allowed to access this website.'; }, ], ], ], // ...
],
````` 在配置中的'headers'部分,添加一个名为'User-Agent'的HTTP头信息,并设置它的值为当前请求的浏览器标识。 在'allowed'选项中,指定允许访问的浏览器列表,可以设置多个浏览器名称。 在'denyCallback'选项中,指定访问被拒绝时的响应处理方法,可以返回一个错误信息或者一个视图。 保存配置文件,重新加载Yii应用程序,此时只有Chrome、Sogou和Googlebot浏览器可以访问该应用程序。
需要注意的是,'User-Agent'是HTTP请求头的一部分,表示当前请求的浏览器标识,但它不是一项强制性的规范,因此不同的浏览器可能会使用不同的名称和格式来设置它。在实际使用中,可能需要根据实际情况来调整允许访问的浏览器列表。同时,这种方式只是一种基于浏览器标识的简单过滤方式,不能保证100%防止恶意访问,还需要结合其他安全措施来提高应用程序的安全性。
少年侠气
注册时间:2018-10-20
最后登录:2019-08-30
在线时长:6小时20分
最后登录:2019-08-30
在线时长:6小时20分
- 粉丝0
- 金钱210
- 威望20
- 积分470