记录一次ajax 429请求laravel api的错误[通俗易懂]

记录一次ajax 429请求laravel api的错误

大家好,又见面了,我是全栈君。

访问频率限制中间件throttle的使用

1、访问频率限制概述

频率限制经常用在API中,用于限制独立请求者对特定API的请求频率。例如,如果设置频率限制为每分钟1000次,如果一分钟内超过这个限制,那么服务器就会返回 429: Too Many Attempts.响应。

通常,一个编码良好的、实现了频率限制的应用还会回传三个响应头: X-RateLimit-LimitX-RateLimit-Remaining和 Retry-After(如果达到限制次数只能获取到 Retry-After头)。 X-RateLimit-Limit告诉我们在指定时间内允许的最大请求次数, X-RateLimit-Remaining指的是在指定时间段内剩下的请求次数, Retry-After指的是距离下次重试请求需要等待的时间(s)。

注意:每个API都会选择一个自己的频率限制时间跨度,GitHub选择的是1小时,Twitter选择的是15分钟,Laravel中间件选择的是1分钟。

2、如何使用Laravel的访问频率限制中间件

在Laravel 5.2的新特性中,你可以使用一个新的中间件 throttle,让我们先来看看这个中间件的用法,首先我们定义一个路由规则如下:

Route::group(['prefix'=>'api'],function(){
    Route::get('users',function(){
        return \App\User::all();
    });
});

然后我们将中间件throttle添加到其中,throttle默认限制每分钟尝试60次,并且在一分钟内访问次数达到60次后禁止访问:

 

Route::group(['prefix'=>'api','middleware'=>'throttle'],function(){
    Route::get('users',function(){
        return \App\User::all();
    });
});
 

如果你访问api/users路由,就会看到响应头如下所示:

Laravel throttle中间件使用

该响应意味着:

  • 请求成功(状态码为200)
  • 每分钟只能访问60次
  • 在本时间段内还能访问57次

如果访问次数超过60次,响应头如下:

Laravel throttle中间件使用

同时,响应内容文本为:Too Many Attempts。

如果44s后重试,页面恢复正常访问。

 

原因如下:
laravel框架api路由默认加载 throttle中间件,该中间件限制了一分钟内访问api的次数:

记录一次ajax 429请求laravel api的错误[通俗易懂]

注释掉这行之后就取消了访问的限制

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

或者将 60 调整成 10000 基本就可以保障访问的需求了。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111737.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • javascript除法如何取整

    javascript除法如何取整javascript除法如何取整Math.round(x)四舍五入,如Math.round(0.60),结果为1;Math.round(0.49),结果为0;Math.floor(x)向下舍入,如Math.floor(0.60)与Math.floor(0.49),结果均为0;Math.ceil(x)向上舍入,如Math.ceil(0.60)与Math.ceil(0….

    2022年6月21日
    56
  • 《编程导论(Java)·2.1.3改写(override)》

    《编程导论(Java)·2.1.3改写(override)》

    2022年2月3日
    39
  • Linux进程间通信

    Linux进程间通信

    2021年8月10日
    57
  • Hbase面试题(面经)整理

    Hbase面试题(面经)整理1.Hbase是什么?hbase的特点是什么?Hbase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理。 Hbase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。 Hbase为null的记录不会被存储。 基于的表包含rowkey,时间戳,和列族。新写入数据时,时间戳更新,同…

    2022年5月31日
    34
  • 语音合成学习(一)综述

    语音合成学习(一)综述一、资料推荐爱丁堡大学课程(全英文,有能力的推荐学习一遍):https://speech.zone/courses/speech-synthesis/TensorflowTTS(比较系统的开源项目):https://github.com/TensorSpeech/TensorFlowTTS二、基础概念介绍1、时域:波形的振幅、频率;2、频域:傅里叶变换:每个复杂的波形都可以由不同频率的正弦波组成;语谱(spectrum):描述了信号包含的频率成分和它们的幅度;语谱图(spectrogram

    2022年6月26日
    53
  • 从最初的什么都不懂到现在自己研究SEO开发出快速排名程序「建议收藏」

    从最初的什么都不懂到现在自己研究SEO开发出快速排名程序「建议收藏」话说SEO,一般人的思维就两个:外链与内容。他们观念中的外链是指到其它网站发外链。当然,笔者不否则这种SEO模式可以提升排名与网站权重。但是,除了发外链与每天更新内容外就没有其它的SEO手法可以有效地

    2022年7月2日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号