CN112597486A - 一种基于Spring的防止重复访问Restful API的方法 - Google Patents

一种基于Spring的防止重复访问Restful API的方法 Download PDF

Info

Publication number
CN112597486A
CN112597486A CN202011548725.6A CN202011548725A CN112597486A CN 112597486 A CN112597486 A CN 112597486A CN 202011548725 A CN202011548725 A CN 202011548725A CN 112597486 A CN112597486 A CN 112597486A
Authority
CN
China
Prior art keywords
request
repeated access
annotation
spring
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011548725.6A
Other languages
English (en)
Inventor
植挺生
陈建生
冼永乐
刘勇
庄广壬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Guangyu Technology Development Co Ltd
Original Assignee
Guangdong Guangyu Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Guangyu Technology Development Co Ltd filed Critical Guangdong Guangyu Technology Development Co Ltd
Priority to CN202011548725.6A priority Critical patent/CN112597486A/zh
Publication of CN112597486A publication Critical patent/CN112597486A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1014Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to tokens
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于Spring的防止重复访问Restful API的方法,包括:S1,定义防止重复访问的注解,并定义其有效标记,S2,继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类以定义拦截器;重写preHandle方法,以在请求前实现拦截验证;并在拦截器定义用于存储请求数据的缓存对象;S3,在需要防止重复访问的API接口使用@DuplicateSubmitToken添加注解,激活防止重复访问功能。本发明使用注解激活验证的方式,可以自由控制API是否需要防止重复访问功能,更灵活地处理各API验证需求。

Description

一种基于Spring的防止重复访问Restful API的方法
技术领域
本发明涉及Restful API访问技术领域,具体涉及一种基于Spring的防止重复访问Restful API的方法。
背景技术
近年来,随着前后端分离思想的兴起,Restful API的使用越来越广泛。然而在前端调用后端的过程中,发现Restful API都有可能会被重复请求。譬如人为主动连续点击前端功能,或者因鼠标性能问题导致的前端功能重复触发。无论是人为或者无意,都会导致在短时间内重复请求Restful API,而这些操作对于系统来说,都是认为是不可控的操作。特别一些对数据有修改的Restful API,譬如表单添加功能,重复请求极可能会出现多条重复的数据;甚至一些操作重要数据的功能,极其有可能令系统出现不可控的问题。
上述问题主要体现在前端触发重复请求,对于前端技术的解决方案,可以通过控制功能按钮来实现防重复请求。具体的,可以在用户点击了按钮后,通过JS把功能按钮的disabled属性改成true(灰色,不可能点击),然后再发送请求,待请求返回,再把功能按钮的disabled属性改成false(正常颜色,可点击)。但是这种解决方案是基于前端技术的,只能解决通过前端页面请求Restful API的问题,实际上Restful API是可以通过任何的HTTP/HTTPS协议访问的,那么这些避开使用前端页面的请求就不能得到控制。
因此,行业内急需研发一种无论是因为设备问题(鼠标按键)或者是人为主观意识操作都能够防止Restful API请求错误重复访问的方法。
发明内容
本发明的目的是为了克服以上现有技术存在的不足,提供了一种基于Spring的防止重复访问Restful API的方法。
本发明的目的通过以下的技术方案实现:
一种基于Spring的防止重复访问Restful API的方法,包括:
S1,定义防止重复访问的注解,并定义其有效标记,
S2,继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类以定义拦截器;重写preHandle方法,以在请求前实现拦截验证;并在拦截器定义用于存储请求数据的缓存对象;
S3,在需要防止重复访问的API接口使用@DuplicateSubmitToken添加注解,激活防止重复访问功能。
优选地,在步骤S2中,定义缓存对象使用谷歌的com.google.common.cache缓存组件实现,设置缓存对象在1秒后自动清除。
优选地,重写preHandle方法包括:
S21,判断preHandle的参数handler对像是否属于org.springframework.web.method.HandlerMethod的子类或接口;若是,则执行步骤S22,若否,则跳过重复访问拦截验证逻辑并且进入下一个拦截器;
S22,从参数handler获取重复访问的注解对象,将注解对象强制转换成HandlerMethod对象;并从参数handler获取防止重复访问的注解对象的DuplicateSubmitToken对象,判断其是否有效标记,若有,则执行步骤S23,若否,则跳过重复访问拦截验证逻辑并且进入下一个拦截器;
S23,若从客服端发送的请求Header包含用户访问令牌TOKEN,则取出用户访问令牌TOKEN作为验证对象;如果没有,则取出请求机器的IP作为验证对象;
S24,获取当前请求标识。
S25,根据访问令牌TOKEN或者请求机器的IP从缓存对象获取缓存请求,若没有获取到缓存请求或者获取的请求标识和当前请求标识不一致,则把客户端过来的请求Header与对应的请求标识添加到缓存对象;若获取的请求标识和当前请求标识一致,则响应请求方,完成验证逻辑;
S26,调用父类的preHandle方法进入下一个拦截器。
优选地,步骤S24包括:从HandlerMethod对象获取当前请求标识,请求标识请求类名和方法名信息。
优选地,步骤S25包括:响应请求方“1秒内请不要重复请求!”
优选地,在步骤S26,待完成所有拦截器的验证逻辑后,在拦截器加上@Component注解,让加上注解的拦截器在系统启动时自动创建,并由Spring管理。
优选地,有效标记为true。
本发明相对于现有技术具有如下优点:
本发明预先定义防止重复访问的注解,并定义其有效标记,然后继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类以定义拦截器,根据访问令牌TOKEN或者请求机器的IP从缓存对象获取缓存请求,若没有获取到缓存请求或者获取的请求标识和当前请求标识不一致,则把客户端过来的请求Header与对应的请求标识添加到缓存对象;若获取的请求标识和当前请求标识一致,则响应请求方,完成验证逻辑;最后在拦截器加上@Component注解,让加上注解的拦截器在系统启动时自动创建,并由Spring管理,这种使用注解激活验证的方式,可以自由控制API是否需要防止重复访问功能,更灵活地处理各API验证需求。另一方面,因为防止重复访问功能并不是所有API都需要的,例如一些查询的功能,因此需要实现防止重复访问激活注解,让每个API选择按需使用此功能。
附图说明
构成本申请的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明的基于Spring的防止重复访问Restful API的方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
参见图1,一种基于Spring的防止重复访问Restful API的方法,包括:
S1,定义防止重复访问的注解,并定义其有效标记,有效标记为true。此注解用于激活API的防止重复访问功能。代码如下:
Figure BDA0002856492160000041
S2,继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类以定义拦截器;重写preHandle方法,以在请求前实现拦截验证;并在拦截器定义用于存储请求数据的缓存对象;定义缓存对象使用谷歌的com.google.common.cache缓存组件实现,设置缓存对象在1秒后自动清除。
在本实施例,继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类以定义拦截器;重写preHandle方法,以在请求前实现拦截验证都是实现拦截器的步骤,首先创建一个HandlerInterceptorAdapter的子类,这个类就是需要创建的拦截器,作为HandlerInterceptorAdapter的子类,它有preHandle、postHandle、afterCompletion三个方法可以重写。preHandle会在处理请求前被执行;postHandle会在处理请求后被执行;afterCompletion会在响应请求后被执行,这三个方法只要返回值为true,则该请求马上被拦截,后面的业务逻辑均不会被执行。而我们的需求是在处理请求前执行拦截逻辑,所以需要重写postHandle方法,把拦截逻辑代码放在里面,如果拦截逻辑判断为这是一个重复访问的请求,则返回true把请求拦截。而定义缓存对象则是创建一个缓存空间,用来储存请求相关信息,而这些信息则是用来支持是否拦截请求的逻辑判断。其中重写preHandle方法包括:
S21,判断preHandle的参数handler对像是否属于org.springframework.web.method.HandlerMethod的子类或接口;若是,则执行步骤S22,若否,则跳过重复访问拦截验证逻辑并且进入下一个拦截器;
S22,从参数handler获取重复访问的注解对象,将注解对象强制转换成HandlerMethod对象;并从参数handler获取防止重复访问的注解对象的DuplicateSubmitToken对象,判断其是否有效标记,若有,则执行步骤S23,若否,则跳过重复访问拦截验证逻辑并且进入下一个拦截器;
S23,若从客服端发送的请求Header包含用户访问令牌TOKEN,则取出用户访问令牌TOKEN作为验证对象;如果没有,则取出请求机器的IP作为验证对象;
S24,获取当前请求标识。具体地,从HandlerMethod对象获取当前请求标识,请求标识请求类名和方法名信息。
S25,根据访问令牌TOKEN或者请求机器的IP从缓存对象获取缓存请求,若没有获取到缓存请求或者获取的请求标识和当前请求标识不一致,则把客户端过来的请求Header与对应的请求标识添加到缓存对象;若获取的请求标识和当前请求标识一致,则响应请求方“1秒内请不要重复请求!”,完成验证逻辑;
通过依赖Spring的拦截器实现,在系统内存保存一个1秒的请求缓存标记,利用该标记判断出重复的请求并忽略,从而达到1秒内相同用户(机器)只能访问一次的效果,让Restful API更好的实现,解决Restful API现有技术的缺陷,避免无意的重复请求导致系统出现不可控问题。
S26,调用父类的preHandle方法进入下一个拦截器。
在步骤S26,待完成所有拦截器的验证逻辑后,在拦截器加上@Component注解,让加上注解的拦截器在系统启动时自动创建,并由Spring管理。Spring为一个框架。
其中,步骤S2为使用Spring拦截器实现防止重复访问的功能。拦截器实现代码如下:
Figure BDA0002856492160000061
Figure BDA0002856492160000071
Figure BDA0002856492160000081
S3,在需要防止重复访问的API接口使用@DuplicateSubmitToken添加注解,激活防止重复访问功能。示例代码如下:
Figure BDA0002856492160000082
Figure BDA0002856492160000091
综上,本申请首先对DuplicateSubmitToke注解类先定义,只有定义了这个类,后面才能使用这个类。它的作用就是让拦截器知道那些方法需要被拦截。其次在拦截器实现验证业务,这里会根据判断该请求方法上是否存在@DuplicateSubmitToke这个注解,如果存在,则认为该方法应该被拦截,如果不存在,则认为该方法不被拦截。最后,就是使用,这里的描述指的是在一个方法上面手工添加@DuplicateSubmitToke这个注解,让拦截器认为这个方法是被拦截的,从而进行后面的拦截判断逻辑。本申请解决了Restful API请求错误重复访问的问题,无论是因为设备问题(鼠标按键)或者是人为主观意识操作,都可以支持,有效保证系统的数据完整性。同时,使用注解激活验证的方式,可以自由控制API是否需要防止重复访问功能,更灵活地处理各API验证需求。再者,按照拦截器加注解激活的这种设计模式,还可以扩展各种拦截器不同的验证逻辑与注解,横向扩展验证每个Restful API请求错误访问的功能。
上述具体实施方式为本发明的优选实施例,并不能对本发明进行限定,其他的任何未背离本发明的技术方案而所做的改变或其它等效的置换方式,都包含在本发明的保护范围之内。

Claims (7)

1.一种基于Spring的防止重复访问Restful API的方法,其特征在于,包括:
S1,定义防止重复访问的注解,并定义其有效标记,
S2,继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter类以定义拦截器;重写preHandle方法,以在请求前实现拦截验证;并在拦截器定义用于存储请求数据的缓存对象;
S3,在需要防止重复访问的API接口使用@DuplicateSubmitToken添加注解,激活防止重复访问功能。
2.根据权利要求1所述的基于Spring的防止重复访问Restful API的方法,其特征在于,在步骤S2中,定义缓存对象使用谷歌的com.google.common.cache缓存组件实现,设置缓存对象在1秒后自动清除。
3.根据权利要求1所述的基于Spring的防止重复访问Restful API的方法,其特征在于,重写preHandle方法包括:
S21,判断preHandle的参数handler对像是否属于org.springframework.web.method.HandlerMethod的子类或接口;若是,则执行步骤S22,若否,则跳过重复访问拦截验证逻辑并且进入下一个拦截器;
S22,从参数handler获取重复访问的注解对象,将注解对象强制转换成HandlerMethod对象;并从参数handler获取防止重复访问的注解对象的DuplicateSubmitToken对象,判断其是否有效标记,若有,则执行步骤S23,若否,则跳过重复访问拦截验证逻辑并且进入下一个拦截器;
S23,若从客服端发送的请求Header包含用户访问令牌TOKEN,则取出用户访问令牌TOKEN作为验证对象;如果没有,则取出请求机器的IP作为验证对象;
S24,获取当前请求标识。
S25,根据访问令牌TOKEN或者请求机器的IP从缓存对象获取缓存请求,若没有获取到缓存请求或者获取的请求标识和当前请求标识不一致,则把客户端过来的请求Header与对应的请求标识添加到缓存对象;若获取的请求标识和当前请求标识一致,则响应请求方,完成验证逻辑;
S26,调用父类的preHandle方法进入下一个拦截器。
4.根据权利要求1所述的基于Spring的防止重复访问Restful API的方法,其特征在于,步骤S24包括:从HandlerMethod对象获取当前请求标识,请求标识请求类名和方法名信息。
5.根据权利要求1所述的基于Spring的防止重复访问Restful API的方法,其特征在于,步骤S25包括:响应请求方“1秒内请不要重复请求!”。
6.根据权利要求1所述的基于Spring的防止重复访问Restful API的方法,其特征在于,在步骤S26,待完成所有拦截器的验证逻辑后,在拦截器加上@Component注解,让加上注解的拦截器在系统启动时自动创建,并由Spring管理。
7.根据权利要求1所述的基于Spring的防止重复访问Restful API的方法,其特征在于,有效标记为true。
CN202011548725.6A 2020-12-24 2020-12-24 一种基于Spring的防止重复访问Restful API的方法 Pending CN112597486A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011548725.6A CN112597486A (zh) 2020-12-24 2020-12-24 一种基于Spring的防止重复访问Restful API的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011548725.6A CN112597486A (zh) 2020-12-24 2020-12-24 一种基于Spring的防止重复访问Restful API的方法

Publications (1)

Publication Number Publication Date
CN112597486A true CN112597486A (zh) 2021-04-02

Family

ID=75200887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011548725.6A Pending CN112597486A (zh) 2020-12-24 2020-12-24 一种基于Spring的防止重复访问Restful API的方法

Country Status (1)

Country Link
CN (1) CN112597486A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988593A (zh) * 2021-04-13 2021-06-18 苏州沁游网络科技有限公司 代码分析方法、装置、计算机设备及存储介质
CN113282466A (zh) * 2021-06-22 2021-08-20 北京奇艺世纪科技有限公司 restful风格的接口的监控数据的处理方法及相关设备
CN113608893A (zh) * 2021-07-23 2021-11-05 苏州浪潮智能科技有限公司 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质
CN113688340A (zh) * 2021-08-13 2021-11-23 山东海量信息技术研究院 一种http请求的处理方法、装置、系统及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080072302A1 (en) * 2006-08-31 2008-03-20 Parkinson Steven W Methods and systems for preventing error in an access protocol
US20110321135A1 (en) * 2010-06-29 2011-12-29 Mckesson Financial Holdings Limited Methods, apparatuses, and computer program products for controlling access to a resource
CN106126540A (zh) * 2016-06-15 2016-11-16 中国传媒大学 数据库访问系统及其访问方法
CN108259437A (zh) * 2016-12-29 2018-07-06 北京神州泰岳软件股份有限公司 一种http访问方法、http服务器和系统
CN109919643A (zh) * 2017-12-12 2019-06-21 北京奇虎科技有限公司 广告请求方法、装置及移动终端
CN110661863A (zh) * 2019-09-20 2020-01-07 政采云有限公司 一种请求处理方法、装置及电子设备和存储介质
CN111444500A (zh) * 2020-03-02 2020-07-24 深圳壹账通智能科技有限公司 鉴权方法、装置、设备及可读存储介质
CN111625782A (zh) * 2020-05-25 2020-09-04 杭州安恒信息技术股份有限公司 源码的访问权限控制方法、装置、计算机设备和存储介质
CN112003947A (zh) * 2020-08-26 2020-11-27 山东恒远智能科技有限公司 一种防止客户端向服务器重复请求的系统和验证方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080072302A1 (en) * 2006-08-31 2008-03-20 Parkinson Steven W Methods and systems for preventing error in an access protocol
US20110321135A1 (en) * 2010-06-29 2011-12-29 Mckesson Financial Holdings Limited Methods, apparatuses, and computer program products for controlling access to a resource
CN106126540A (zh) * 2016-06-15 2016-11-16 中国传媒大学 数据库访问系统及其访问方法
CN108259437A (zh) * 2016-12-29 2018-07-06 北京神州泰岳软件股份有限公司 一种http访问方法、http服务器和系统
CN109919643A (zh) * 2017-12-12 2019-06-21 北京奇虎科技有限公司 广告请求方法、装置及移动终端
CN110661863A (zh) * 2019-09-20 2020-01-07 政采云有限公司 一种请求处理方法、装置及电子设备和存储介质
CN111444500A (zh) * 2020-03-02 2020-07-24 深圳壹账通智能科技有限公司 鉴权方法、装置、设备及可读存储介质
CN111625782A (zh) * 2020-05-25 2020-09-04 杭州安恒信息技术股份有限公司 源码的访问权限控制方法、装置、计算机设备和存储介质
CN112003947A (zh) * 2020-08-26 2020-11-27 山东恒远智能科技有限公司 一种防止客户端向服务器重复请求的系统和验证方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
毕永飞: "SpringBoot防止重复请求,重复表单提交超级简单的注解实现", Retrieved from the Internet <URL:https://www.cnblogs.com/bevis-byf/p/11491547.html> *
猿份哥: "SpringBoot防止重复请求,重复表单提交超级简单的注解实现之一(初级版)", Retrieved from the Internet <URL:https://blog.csdn.net/u013042707/article/details/80521418> *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988593A (zh) * 2021-04-13 2021-06-18 苏州沁游网络科技有限公司 代码分析方法、装置、计算机设备及存储介质
CN112988593B (zh) * 2021-04-13 2024-02-06 苏州沁游网络科技有限公司 代码分析方法、装置、计算机设备及存储介质
CN113282466A (zh) * 2021-06-22 2021-08-20 北京奇艺世纪科技有限公司 restful风格的接口的监控数据的处理方法及相关设备
CN113282466B (zh) * 2021-06-22 2023-09-15 北京奇艺世纪科技有限公司 restful风格的接口的监控数据的处理方法及相关设备
CN113608893A (zh) * 2021-07-23 2021-11-05 苏州浪潮智能科技有限公司 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质
CN113608893B (zh) * 2021-07-23 2023-08-25 苏州浪潮智能科技有限公司 防止重复下发策略给RabbitMQ的方法、系统、终端及存储介质
CN113688340A (zh) * 2021-08-13 2021-11-23 山东海量信息技术研究院 一种http请求的处理方法、装置、系统及存储介质

Similar Documents

Publication Publication Date Title
CN112597486A (zh) 一种基于Spring的防止重复访问Restful API的方法
US10749990B1 (en) Automatic discovery of API information
CN107948314B (zh) 基于规则文件的业务处理方法、装置及服务器
US9336324B2 (en) Intelligent caching for security trimming
US9448932B2 (en) System for caching data
KR101953942B1 (ko) 전용 캐시 관리 시스템 및 방법
US8621092B2 (en) Remote portlet consumer with enhanced resource URL processing
JPH10312350A (ja) リソース命名方法及び機構
JP2007149074A (ja) コンテキスト・ベースのナビゲーション
JP3791900B2 (ja) コンピュータ処理システムにおいてカスタマイズした情報を提供する方法とシステム
US20140317537A1 (en) Browser based application program extension method and device
US20240126846A1 (en) Identifying and consenting to permissions for workflow and code execution
CN111010418A (zh) 一种Geoserver数据获取方法、终端及存储介质
US10691750B1 (en) Browser configured to efficiently store browsing session state
CN109428872B (zh) 数据传输方法、设备、服务器及启动方法、系统
US20130091201A1 (en) Methods, systems, and computer program products for processing an attached command response
US10176153B1 (en) Generating custom markup content to deter robots
JP5320637B2 (ja) データ検索システム、システム、プログラム、およびデータ検索方法
US20120151313A1 (en) User-specific customization of web pages
CN109344353B (zh) 一种可配置化的本地缓存刷新方法及终端
US10530709B2 (en) Container contract for data dependencies
JP2009187401A (ja) 文書管理システム、文書管理装置、文書管理方法及びプログラム
US9760897B2 (en) Method and system for defining an offlinable view/controller graph
CN110401686B (zh) Whois查询方法、装置、设备及其存储介质
US11017032B1 (en) Document recovery utilizing serialized data

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination