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


相关推荐

  • 剑指Offer面试题:5.重建二叉树

    一题目:重建二叉树二思路先根据前序遍历序列的第一个数字创建根结点,接下来在中序遍历序列中找到根结点的位置,这样就能确定左、右子树结点的数量。在前序遍历和中序遍历的序列中划分了左、右子树结点的值

    2021年12月19日
    51
  • java的输入输出格式

    java的输入输出格式不是特别完整和齐全,自己的一些小感悟,希望能帮助大家。对新手很友好,哈哈哈。输入:Scannerin=newScanner(System.in);新创建一个输入的Scanner对象,然后赋值给in,这个作用就是获取控制台的输入!!!in.nextInt()表示读入一个整数inta;表示定义一个变量a=in.nextInt();表示读入了一个数,把右边输入的值赋值给a。这里注意有一些规则,我们可以看到后面的类型名称首字母大写,大家可以记住这个小tip,养成好的代码风

    2022年7月9日
    15
  • redis远程连接不上解决办法「建议收藏」

    redis远程连接不上解决办法「建议收藏」问题描述:redis远程服务端运行在192.168.3.90计算机上,客户端计算机(ip:192.168.3.110)通过redsi-cli.exe客户端工具连接时,没有反应,连接不上。如图所示:解决步骤:步骤一:注释掉redis.window.conf文件中的bind属性设置。如图所示:步骤二:把protected-mode属性设置no…

    2022年9月19日
    0
  • 北航计算机考研有多难_北京航空航天大学录取分数线2021

    北航计算机考研有多难_北京航空航天大学录取分数线2021文/最爱生活截止到现在,高考的志愿填报工作已经陆陆续续结束,各个高校也开始进行了录取工作。最近也有一部分省份开始公布了一些提前批次招录的投档分数线,同学们也将会陆陆续续的接受到自己理想中大学的录取通知书。目前,又有两个省份开始公布了本省份的提前批次投档分数线,分别是贵州省以及新疆维吾尔自治区。在这两个省份公布出提前批次的录取分数线之后,在网上也是一石激起千层浪,不少“惊喜”的事情也在发生,不少网友…

    2022年9月12日
    0
  • Mybatis工作流程及其原理与解析

    Mybatis简介:MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据库中的记录。本文将通过d…

    2022年4月7日
    55
  • 如何搭建自己的git服务器_git 创建远程仓库

    如何搭建自己的git服务器_git 创建远程仓库GitHub,Gitee想来大家都用过,我们的代码就是托管在这些平台上的。因此,你可能好奇为什么我们不自己大家一个git服务器呢?下面,就开始教大家如何一步步搭建自己的git服务器(试验成功的那一刻还是很让人激动的)。我自己的虚拟机是centOS7的,首先肯定要安装git和git-daemon,可以使用自带的yum进行安装。yuminstall-ygityuminstall-ygit-daemon虚拟机服务端创建git目录[root@ma.

    2022年9月25日
    0

发表回复

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

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