记录一次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 基本就可以保障访问的需求了。

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IDEA使用ideaVim, 配置自定义vim快捷键[通俗易懂]

    IDEA使用ideaVim, 配置自定义vim快捷键[通俗易懂]C:\Users\Administrator文件夹下创建_ideavimrc,我这里用的是win系统需要安装ideaVim插件letmapleader=”sethlsearchsetincsearchsetignorecasesetsmartcasesetshowmodesetnumbersetrelativenumbersetscrolloff=…

  • 安装VMware Tools显示灰色正确解决办法

    安装VMware Tools显示灰色正确解决办法百度了一天,重新安装了vm,在csdn逛了又逛,结合无数篇大神文章,最后自己句琢磨出了真正能点亮灰色按钮的方法。简单实在,大神们的方法实在千秋万变,一个比一个复杂,最后只能实现成功拖拽,而复制粘贴却还是不行。首先问题如下:解决办法如下:1.关闭虚拟机;2.在虚拟机设置分别设置CD/DVD、CD/DVD2和软盘为自动检测三个步骤即可;3.再重启虚拟机,灰色字即点亮。…

  • 这是我见过最牛逼的接口自动化测试框架没有之一:基于python+requests+pytest+allure实现

    这是我见过最牛逼的接口自动化测试框架没有之一:基于python+requests+pytest+allure实现这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入众所周知,企业实现接口自动化最常用的就是两种:1.基于工具类的接口自动化,如:Postman+Newman+Jenkins+Git/svnJmet

  • maven打包时跳过测试「建议收藏」

    maven打包时跳过测试「建议收藏」开发记录有一个maven项目,我clone一下最新的代码。准备打包(mavenpackage),没想到在执行到TEST阶段报错。百思不得其解,决定跳过测试去打包,然后部署。Failedtoexecutegoalorg.apache.maven.plugins:maven-surefire-plugin:2.12.4:test在运行mvninstall或mvnpackag…

  • full gc原因(解决问题的方法有哪些)

    #问题描述在工作过程中,遇到一个问题:Tomcat在重启或者发布的时候,会有多次的fullGC。JDK版本是1.8首先排查JVM的问题,就要把GC日志打开-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintGCDateStamps-Xloggc:/home/logs/gc.log重启Tomcat…

  • spring aop实例讲解_java swing 教程

    spring aop实例讲解_java swing 教程1.SpringAOP是什么?AspectOrientedProgramming:面向切面编程什么时候会出现面向切面编程的需求?按照软件重构的思想,如果多个类中出现重复的代码,就应该考虑定义一个共同的抽象类,将这些共同的代码提取到抽象类中,比如Teacher,Student都有username,那么就可以把username及相关的get、set方法抽取到SysUser中,这种情况,我们称…

发表回复

您的电子邮箱地址不会被公开。

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