php - LARAVEL - 使用速率限制中间件时自定义响应标头
问题描述
我正在laravel8中开发一个项目(这仍然是新的),我想隐藏一些自定义响应标头(以 x- 开头),例如:
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 14
我想自定义此行为并隐藏这些标头,如何轻松找到代码(在框架中),这些标头是哪个集
我的代码:
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(15);
});
}
解决方案
假设我们可以创建一个App\Http\Middleware\ThrottleRequests
将扩展 original 的新类\Illuminate\Routing\Middleware\ThrottleRequests
。并将该方法覆盖getHeaders
为您自己的方法,该方法将返回空数组。
namespace App\Http\Middleware;
use Illuminate\Routing\Middleware\ThrottleRequests as OriginalThrottleRequests;
/**
...
*/
class ThrottleRequests extends OriginalThrottleRequests
{
/**
* @inheritdoc
*/
protected function getHeaders($maxAttempts, $remainingAttempts, $retryAfter = null)
{
return [];
}
}
然后您需要做的就是更改app/Http/Kernel.php
文件中的中间件定义。$routeMiddleware
您注册“节流”中间件的属性\Illuminate\Routing\Middleware\ThrottleRequests::class
可以更改为您自己的实现\App\Http\Middleware\ThrottleRequests::class
。
就我而言,它是:
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
//...
'throttle' => \App\Http\Middleware\ThrottleRequests::class,
//...
];
推荐阅读
- android - 在片段中使用改造和回收视图时遇到问题
- r - 使用 tidydata 导入 .csv 文件
- django - 使用 mongdb 更新 django 模型表单集中的 jsonfields
- javascript - 快速安装路线
- python - Pandas 根据条件搜索字符串
- ios - 在 Ionic 4 的应用程序中打开 facebook 链接在 iOS 中不工作(在 Android 中工作)
- angular - 在 Angular 8+(和 Ivy 就绪?)中以编程方式加载模块
- laravel-5 - Laravel 5.x 中的空白页
- kotlin - 将数组中的值分配给单个变量的惯用方法
- apache-spark - spark如何处理在DStream之外初始化的数据结构