Laravel中的too many attempts

在使用Laravel框架做Api Server的时候,你可能会遇到“429”状态,提示内容为“Too many attempts”。

这是因为Laravel从5.2开始,增加了一个Throttle的中间件。如果你仔细看一下Kernel.php文件,你就会发现,api路由是默认使用了这个中间件的。

这个中间件的作用是限制同一个Ip访问同一个Api的访问次数,模式是1分钟内只能访问60次,超过60次,则会返回429状态。需要等待1分钟后才可以访问。

我看了Throttle的源代码,是带入了IP参数的,也就是一个人只要别1秒内访问多次就行了。按理说,这是一个符合实际情况的设置,但是为什么我们还是会频繁遇到429状态呢?

我觉得你需要检查下服务器配置了,有时候可能大家在一个办公区域,用了VPN,导致出口ip是同一个ip,那么办公室里的所有人在访问API Server的时候,都会认为是同一个ip,自然就超过了1分钟60次的访问频率了。

根据实际情况,你可以在Kernel.php中注释掉这个中间件,也可以将配置参数设置大一点,都可以解决这个问题。

发表回复