LARAVEL - 使用速率限制中间件时自定义响应 headers
LARAVEL - Customize response headers when using rate limiting middleware
我正在 laravel8 中开发一个项目(还是新的),我想隐藏一些 自定义响应 headers (以 x- 开头)如:
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 14
我想自定义此行为并隐藏这些 headers,我怎样才能轻松找到代码(在框架中),其中设置了这些 headers
我的代码:
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(15);
});
}
假设我们可以创建一个新的 App\Http\Middleware\ThrottleRequests
class 来扩展原始的 \Illuminate\Routing\Middleware\ThrottleRequests
。并将方法 getHeaders
重写为您自己的方法,这将 return 空数组。
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
你在哪里注册 'throttle' 中间件 \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,
//...
];
我正在 laravel8 中开发一个项目(还是新的),我想隐藏一些 自定义响应 headers (以 x- 开头)如:
X-RateLimit-Limit: 15
X-RateLimit-Remaining: 14
我想自定义此行为并隐藏这些 headers,我怎样才能轻松找到代码(在框架中),其中设置了这些 headers
我的代码:
protected function configureRateLimiting()
{
RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(15);
});
}
假设我们可以创建一个新的 App\Http\Middleware\ThrottleRequests
class 来扩展原始的 \Illuminate\Routing\Middleware\ThrottleRequests
。并将方法 getHeaders
重写为您自己的方法,这将 return 空数组。
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
你在哪里注册 'throttle' 中间件 \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,
//...
];