记录一次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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python处理xml文件_文件格式怎么转换

    Python处理xml文件_文件格式怎么转换由于项目组中原来的文件使用的XML格式作为配置,扩展性很好,但是编辑与阅读不是很直观,特别一些规则的二维表,所以为了方便阅读与编辑,花了一些时间写了一个Python脚本,以实现将XML文件转为Excel文件。这里支持XML文件转为一个Sheet或者多个Sheet:如果第二层所有标签都相同则会转为一个Sheet,所有第二层的标签都会作为行数据如果第二层的标签有多种,则会把第二层的不同标签作为…

    2022年8月22日
    6
  • hashmap和hashtable和hashset的区别_的跟得的区别在哪里

    hashmap和hashtable和hashset的区别_的跟得的区别在哪里HashMap和Hashtable的区别两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全。Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法

    2026年1月18日
    3
  • Java栈结构_栈java

    Java栈结构_栈javaJava栈结构概念典型的栈结构如下图所示:栈结构只能在一端操作,该操作端叫做栈顶,另一端叫做栈底。栈结构按照“后进先出”(LastInFirstOut,LIFO)的方式处理结点数据。栈的特点:其实栈结构是一种受限制的线性数据结构。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相

    2025年9月22日
    5
  • jar war ear_什么时候用jar包与war包

    jar war ear_什么时候用jar包与war包war是web的一个模块,其中需要包括WEB-INF,可以直接运行。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布。  war包:一般是做好一个web应用后,通常是网站,打成包部署到容…

    2022年9月27日
    3
  • 计算机图形学中的空间坐标系

    计算机图形学中的空间坐标系

    2021年6月9日
    97
  • idea进入方法快捷键详情大全(idea快捷键大全最新设置)[通俗易懂]

    idea进入方法快捷键详情大全(idea快捷键大全最新设置)[通俗易懂]首页>软件应用>返回首页idea进入方法快捷键详情大全(idea快捷键大全最新设置)软件应用发布时间:2022-02-1311:05:09刚开始使用IDEA时一直都不熟悉,利用空闲的时间整理了一下常用的IDEA快捷键。1、Ctrl快捷键介绍Ctrl+F在当前文件进行文本查找Ctrl+R在当前文件进行文本替换Ctrl+Z撤销Ctrl+Y删除光标所在行或删除选中的行Ctrl+X剪切光标所在行或剪切选择内容…

    2022年10月2日
    4

发表回复

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

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