<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class checkHosts
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($request->getHost() != '<host_name>') {
return response('You do not have access rights to this content.', 403);
}
return $next($request);
}
}
2条答案
按热度按时间im9ewurl1#
不幸的是,如果用户设置了浏览器来修改请求头,PHP就没有办法辨别请求是否来自某个网站。
阻止来自URL的流量,虽然很容易做到-但永远不会100%准确。
7jmck4yq2#
这篇文章是旧的,但是,对于其他寻找更新答案的人来说,可以在nginx/apache服务器上添加命令来限制从其他主机到本地路径的访问,建立每分钟允许的请求数等。
但是,如果你没有访问服务器/目录配置,那么Laravel仍然可以提供一些技术来管理这个问题。
一种是创建一个新的中间件来限制对请求主机的访问。
字符串
不要忘记将此中间件添加到文件:
app\Http\Kernel.php
中,以便它对发送到您的端点的每个请求立即生效。