精华内容
下载资源
问答
  • 接口访问
    千次阅读
    2022-03-29 09:14:56

    location表达式类型

    • location = 表示精确匹配
    • location ^~ 表示uri以指定字符或字符串开头
    • location ~ 表示区分大小写的正则匹配
    • location ~* 表示不区分大小写的正则匹配
    • location / 通用匹配,任何请求都会匹配到

    匹配的优先级顺序

    ( localtion = ) > ( localtion 完整url ) > ( localtion ^~ ) > ( localtion ,* ) > ( lcoaltion部分起始路径 ) > ( / )

    需求

    nginx反向代理某服务有两个负载,要求 某个 或者 某系列 请求 打向指定负载

    • 定义upstream
        #7080 7091 2负载服务
    	upstream gateway-all {
            server 127.0.0.1:7080;
            server 127.0.0.1:7081;
        }
    	#7080服务
        upstream gateway-7080 {
            server 127.0.0.1:7080;
        }
    	#7081服务
        upstream gateway-7081 {
            server 127.0.0.1:7081;
        }
    

    ​ 要求 /api/v1/login 请求 7080机器,/api/v1/logout 请求 7081机器,其他请求走负载,/test-gateway 是反向代理服务的上下文

    • 实现一:定义不同的localtion,路由不同的uri
        location /test-gateway/api/v1/login  {
        	#指向上面的upstream
            proxy_pass http://gateway-7080;
        }
        
        location /test-gateway/api/v1/logout  {
        	#指向上面的upstream
            proxy_pass http://gateway-7081;
        }    
        
        location /test-gateway  {
        	#指向上面的upstream
            proxy_pass http://gateway-all;
        }
    
    • 实现二:一个localtion,路由不同的uri
        location /test-gateway {
    		if ($request_uri ~* "/api/v1/login"){
    			proxy_pass http://gateway-7080;
    		}
    		if ($request_uri ~* "/api/v1/logout"){
    			proxy_pass http://gateway-7081;
    		}
            proxy_pass http://gateway-all;
        }
    

    location 灵活多变,具体哪种适合自己,根据自己的业务场景来做选择

    更多相关内容
  • .NET接口访问频率限制——MvcThrottle

    千次阅读 2020-09-13 19:54:20
    1、首先搜索安装MvcThrottle。 2、引用空间 using ... } } 4、然后在需要控制的方法上边加上 [EnableThrottling(PerSecond = 5, PerMinute = 10)] 5、测试,快速访问该方法,就会报错了: 以上就实现了防刷的功能。 

           1、首先搜索安装MvcThrottle。

           2、引用空间

    using MvcThrottle;

           3、在FilterConfig里边添加方法:

    public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                const int secondCount = 1;
                var throttleFilter = new ThrottlingFilter
                {
                    //每秒钟最多请求secondCount次,每分钟最多请求secondCount*60次,依次类推
    
                    Policy = new ThrottlePolicy(
                        perSecond: secondCount,
                        perMinute: secondCount * 10,
                        perHour: secondCount * 10 * 5,
                        perDay: secondCount * 10 * 5 * 2)
                    {
                        IpThrottling = true
                    },
                    Repository = new CacheRepository()
                };
                filters.Add(throttleFilter);
                filters.Add(new HandleErrorAttribute());
                filters.Add(new CustomHandleErrorAttribute());
            }
        }

          

           4、然后在需要控制的方法上边加上

    [EnableThrottling(PerSecond = 5, PerMinute = 10)]

            5、测试,快速访问该方法,就会报错了:

          以上就实现了防刷的功能。 

    展开全文
  • 接口访问报错:301 Moved Permanently

    千次阅读 2022-02-07 16:00:27
    今天接口访问报错:301 Moved Permanently。我傻傻的检查了好半天后台日志,发现怎么都找不到。后来问了大神,才晓得301请求压根就没有到后台,当然没有日志了。 报错如下: 解释: 「301 Moved Permanently...

    场景

    今天接口访问报错:301 Moved Permanently。我傻傻的检查了好半天后台日志,发现怎么都找不到。后来问了大神,才晓得301请求压根就没有到后台,当然没有日志了。

    报错如下:

    解释:

    • 「301 Moved Permanently」表示永久重定向,说明请求的资源已经不存在了,需改⽤新的 URL 再次访问。
    • 301 和 302 都会在响应头里使用字段 Location ,指明后续要跳转的 URL,浏览器、postman等会自动定向新的 URL。

    解决:

    1. 检查接口请求地址。
    2. 检查网络环境
    3. 检查是不是正在发版导致
    展开全文
  • 接口访问次数限制

    万次阅读 2016-04-05 11:34:27
    接口访问次数限制(request_limit) ================================================================================ 利用spring切面或拦截器实现; 可以对所有接口或添加注解的接口实现请求次数限制; 利用缓存的...

    接口访问次数限制(request_limit)
    ================================================================================
    利用spring切面或拦截器实现;

    可以对所有接口或添加注解的接口实现请求次数限制;

    利用缓存的过期时间功能,uri太长可以做个映射(为缓存节省空间);

    ip要防止利用代理访问;

    限制维度:ip级别、用户+接口级别;

    *******************************注解类
    /**
     * request请求次数限制
     * 示例:@RequestLimit(ipCount=2,ipTime=60000,uriCount=2,uriTime=60000)
     * @date 2016-03-23 13:28:06
     */
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    public @interface RequestLimit {
    
        /**
         * ip允许访问的次数,默认值1000
         */
        int ipCount() default 1000;
    
        /**
         * ip时间段,单位为毫秒,默认值一分钟
         */
        long ipTime() default 60000;
        
        /**
         * uri允许访问的次数,默认值600
         */
        int uriCount() default 600;
    
        /**
         * uri时间段,单位为毫秒,默认值一分钟
         */
        long uriTime() default 60000;
    
    }
    *******************************

    *******************************spring切面
    public Object around(ProceedingJoinPoint pjp)  {
    //拦截的实体类
        Object target = pjp.getTarget();
        //拦截的方法名称
        String methodName = pjp.getSignature().getName();
        //拦截的放参数类型
        Class[] parameterTypes = ((MethodSignature)pjp.getSignature()).getMethod().getParameterTypes();
        Class[] clazzs = target.getClass().getInterfaces();
        //1.获取类
        Class clazz = target.getClass();
        if (clazzs != null && clazzs.length > 0){
            clazz = clazzs[0];
        }
        //2.获取方法
        Method m = clazz.getMethod(methodName, parameterTypes);
        //3.获取request、callback
        Object[] args = pjp.getArgs();
        HttpServletRequest request = null;
        if (args != null && args.length > 0) {
            if (args[0] instanceof HttpServletRequest) {
                request = (HttpServletRequest) args[0];
                if(request != null){
                    callback = request.getParameter("callback");
                }
            }
        }
        //RequestLimit判断
        String reequestLimitRes = this.RequestLimitCheck(m, request);
        if("fail".equals(reequestLimitRes)){
            return "fail";//返回值改为自己的格式
        }else{
            Object obj = pjp.proceed();
        }
    }
    
    private String RequestLimitCheck(Method m, HttpServletRequest request) throws IOException{
        //ip、user_phone+uri  两个维度的访问限制
        if(m!=null && m.isAnnotationPresent(RequestLimit.class)){
            RequestLimit requestLimit = m.getAnnotation(RequestLimit.class);
            //失效时间、访问次数
            int ipTime = (int) (requestLimit.ipTime() / 1000);
            int ipCount = requestLimit.ipCount();
            int uriTime = (int) (requestLimit.uriTime() / 1000);
            int uriCount = requestLimit.uriCount();
    
            //ip、user_phone、uri
            String ip_key = NetworkUtil.getIpAddress(request);//ip:获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;
            String user_phone = request.getParameter("user_phone");//手机号
            String uri = request.getRequestURI().toString();//uri:如果字符串太长,可以做个映射
            String user_uri_key = user_phone + uri;
            //先从缓存中(以Memcached为例)获取两个key对应的value值,value值为访问限制次数
            List<String> keyCollections = new ArrayList<String>();
            keyCollections.add(ip_key);
                keyCollections.add(user_uri_key);
            Map<String, String> valueMap = memcachedClient.get(keyCollections);//一次读取出多个key_value
            Integer ipNumCache = 0;//ip访问次数
                Integer userUriNumCache = 0;//手机号+uri访问次数
                if(valueMap!=null && valueMap.size()>0){
                    String ipNumCacheFlag = valueMap.get(ip_key);
                    if(StringUtils.isNotBlank(ipNumCacheFlag)){
                        ipNumCache = Integer.parseInt(ipNumCacheFlag);
                    }
                    String userUriNumCacheFlag = valueMap.get(user_uri_key);
                    if(StringUtils.isNotBlank(userUriNumCacheFlag)){
                        userUriNumCache = Integer.parseInt(userUriNumCacheFlag);
                    }
                }
            //ip限制判断
                if(ipNumCache == 0){
                    memcachedClient.set(ip_key, 1, ipTime);
                }else if(ipNumCache >= ipCount){
                    logger.info("request_limit:用户IP[" + ip_key + "],超过了限定的次数[" + ipCount + "]");
                    return "fail";
                }else{
                    memcachedClient.incr(ip_key, 1);//自增
                }
            //user_phone、uri限制判断
            if(userUriNumCache == 0){
                memcachedClient.set(user_uri_key, 1, uriTime);
            }else if(userUriNumCache >= uriCount){
                logger.info("request_limit:用户手机号[" + user_phone + "],访问地址[" + uri + "],超过了限定的次数[" + uriCount + "]");
                return "fail";
            }else{
                memcachedClient.incr(user_uri_key, 1);
            }
        }
        return "success";
    }
    *******************************
    后续:

    可以将不正常调用的用户添加进黑名单,保存在数据库中...

    爬虫项目会定期定时访问接口,后台分析...



    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201909/20/1568975990_284679.jpg) 在局域网中,可以ping通,但是不能通过接口访问api
  • 通过nginx access.log统计接口访问

    千次阅读 2018-06-21 15:05:50
    背景:统计近期rest接口访问情况1、查看包含关键字xxx的http请求 cd ~/nginx/logs gzip -d access.log-20180611.gzgrep xxx access.log-20180611 100.116.219.230 - - [11/Jun/2018:01:21:45 +0800] "...
  • 小程序大赛在3.28早上10点正式开赛,同时开放报名通道。这里介绍小程序上线所必须的https接口访问配置——小程序官方文档规定:在开发小程序的过程中可以使用http访问接口,但是上线了必须使用https。
  • 后台接口访问不了可能的一个原因

    万次阅读 2018-04-11 10:59:27
    接口刚写好,Swagger测试就访问不了接口了。查看Chrome开发者工具: 返回200 Provisional headers are shown查看日志信息。2018-04-11 09:15:40.266 INFO 4596 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat]....
  • 通过自定义注解形式实现接口访问评论限制 1.自定义注解,访问限制值和时间放在注解的参数中 RequestLimit.java注解 @Retention(RetentionPolicy.RUNTIME) public @interface RequestLimit { /** * * 允许访问的...
  • 现象:前端访问后台上传文件接口没有任何返回值,只有"{}"。后端在上传文件接口处打断点也不进来,后来才发现后端spring-mvc没有配置多媒体解析器,导致MultipartFile类型参数接收不到。 &lt;!--配置...
  • 现在有个接口,直接测试是6s左右,逻辑程序都在几个毫秒之间,查询用了5s+.但是控制台打印了查询语句,用Navicat直接查该语句又在0.2s的样子,数据库是远程,就不知道哪个地方能优化orz,麻烦解答下
  • 目前用户的登录解决方案,就是用户输入账号密码进到接口验证正确后系统生成一串带有时效性的字符串。下次用户在访问一些需要用户登录才能访问接口时就不用...如果通过就继续访问用户要访问接口,如果不通过可...
  • 原因是虽然开启了代理,但是请求的url里多了一个/api/,这时我们需要把多余的/api/去掉,需要使用pathRewrite参数,把/api/设置成空,这时就可以正常跨域访问了 配置文件: const { createProxyMiddleware } = ...
  • Go实现接口访问速率限制

    千次阅读 2016-11-23 10:14:36
    接口的访问限制,10分钟内,接口访问限制100次 基于go语言进行编写,抽离出统一配置。 func CheckRateLimit(ip, request, action string) bool { current := int(time.Now().Unix()) currentStr := strconv....
  • Jmeter如何配置Oauth2.0授权接口访问

    千次阅读 2019-01-21 16:52:01
    当一个接口配置了Oauth安全认证后,在访问这类接口时,需要先访问uaa授权接口获取token,后续接口请求头中带上这个token,才能访问成功。 下面分享一下我公司目前的对于Oauth2.0的配置: 1)访问uaa的token获取...
  • 最终实现的效果是访问一个url,列出当前系统中所有api接口访问信息,包括:接口的调用次数、正常调用次数、异常调用次数、接口的平均访问时间、最大访问时间、最小访问时间,如图所示: 思路: (1)定义一个拦截...
  • 背景:查看loginByMobile接口访问量,排查被攻击cat access.log|grep loginByMobile| awk '{print $1}'|sort |uniq -c|more
  • 接口访问出现Pending状态

    千次阅读 2020-12-02 16:45:33
    问题排查:服务器部署服务接口访问出现1/2Pending状态: 问题定位:访问服务两次中一次200状态,一次Pending,所以应该定位问题在负载均衡上,先查看注册中心nacos,打开nacos首页发现一个服务有两个实例,其中一...
  • 关于接口访问权限

    千次阅读 2019-04-02 11:52:02
    我今天学了一个好东西,关于接口安全问题的 就是咱们之前不都是权限验证嘛,这个方式很麻烦! 就是请求时请求头上加上两个参数sign和timestamp,服务端用这两个参数去验证, 这样就可以解决接口安全的问题啦!!!...
  • nodejs开通https的接口访问

    千次阅读 2019-07-17 14:07:47
    nodejs+express+mysql线上部署以后,nodejs开通https的接口访问,适用小程序开发接口 一、申请域名先申请ssl证书支持https 免费申请https>>>阿里云https如何免费申请 二、下载ssl证书 下载ssl证书中的...
  • springboot项目启动正常,但是rest接口访问404 解决办法 1·SpringBoot成功启动,接口无法访问,查看Application启动类与接口是否保持在同级目录或子目录,@SpringBootApplication默认的扫描位置就是Application...
  • 今天使用测试接口的时候,报了一个413错误 chunk-libs.0d7f7ccf.js:11 Uncaught (in promise) Error: Request failed with status code 413 at e.exports (chunk-libs.0d7f7ccf.js:11) 经查,413的错误码是表示:...
  • java访问api接口

    千次阅读 2022-03-15 15:21:55
    首先拿到别人的接口文档,看访问形式然后在postman上尝试访问能不能获取。 能获取后就在后端代码中实现 public String getJob(){ String s2 = "你的token"; String json = "{\"status\":1,\"startTime\":\...
  • 此时,绕过网关,直接访问auth服务的接口会返回error,即必须通过网关,我们的任务看似完成了。 问题 在项目中,发现了feign远程调用会失败,因为在fegin中调用不通过gateway,缺少from的请求头,会被拦截器拦截...
  • java设置接口访问超时,自动响应

    万次阅读 2018-08-31 09:56:14
    一.问题探究 前段时间在搞一个批量处理程序,涉及到多线程操作。但是后台服务很不给力,并发一大常常就挂了,长时间不给返回,导致我的程序也挂死在那里…… 那么能不能设置一段代码执行的超时时间呢?...
  • 使用CSE轻松实现接口访问控制

    千次阅读 2019-05-06 15:01:48
    本文介绍了如何使用CSE轻松实现接口访问控制,通过例子展现了CSE微服务开发框架在契约管理方面的优势。 在《基于CSE的微服务架构实践-基础架构》中,我们介绍了一个典型的微服务架构,如下图。采用这种架构的微服务...
  • 我们有的时候系统里面有的用户接口为了控制访问频率,需要使用到,笔记走一波 环境: spring spring mvc Guava:谷歌高并发工具,下面是maven <!--谷歌guava高并发处理工具--> <dependency> <...
  • dubbo接口访问控制

    万次阅读 2017-05-23 22:08:47
    微服务背景下,一个web应用都可能不再service依赖,而是通过RPC调用远端服务器上的服务。这些服务里,就包括了一些不能轻易暴露的后台功能接口。...为此,考虑通过白名单机制来控制dubbo接口访问。现在以许可ip127.0
  • access_token(接口访问凭证)

    千次阅读 2016-09-08 10:59:35
    微信公众平台为开发者提供了一系列接口,开发者通过调用这些接口能够实现自定义菜单管理、用户管理、消息群发、语义理解等功能,在调用这些接口时都需要传入接口访问凭证access_token。公众平台提供了专门的接口来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,140,612
精华内容 856,244
关键字:

接口访问