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