Laravel API 限速异常 HTTPException Too Many Attemps


最近线上 Laravel 错误日志发现了一个异常

HTTPException Too Many Attemps

而我一个同事在本地开发的过程中也频繁遇到这个异常。测试环境:Laravel 5.5。

网上查了一下,是 Laravel 5.2 引入的 throttle middleware 造成的。

源码参考

https://github.com/illuminate/routing/blob/master/Middleware/ThrottleRequests.php

public function handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1) 

其表现是在 HTTP 的 Response 头中缀上了请求次数统计

X-RateLimit-Limit:60 X-RateLimit-Remaining:59 

从 Chrome 的 console 看,每个 API 请求都会占用这个 limit 的限额。

X-RateLimit-Limit:60 X-RateLimit-Remaining:53 

等过一分钟,再发送一个请求,都会发现限额已经被自动恢复。

对应的配置在 Laravel 项目文件 app/Http/Kernel.php

'api' => [ 'throttle:60,1', 'bindings', ] 

所以,

  • 第一个参数 60 代表每分钟限制 60 次请求
  • 第二个参数 1 代表触发了限制规则,则1分钟内禁止访问

将 60 调整成 120 就可以保证本地 debug 不会被频繁限制了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM