1、插件作用
校验请求参数在URI中的顺序,必须按配置的参数顺序来,否则拒绝访问。
2、核心代码
local function decideUriExists(uri_key,uri_value,uri_param_tab)
local exists = true
local args = ngx.req.get_uri_args()
for i = 1, #uri_key do
local each_key = uri_key[i]
local each_value = uri_value[i]
local http_uri_key_value = args[each_key]
if (http_uri_key_value ~= nil) and (string.lower(each_value) == string.lower(http_uri_key_value)) then
-- Nothing to do
else
return exists
end
end
local uri_param_tab_len = #uri_param_tab
local original_uri = ngx.var.request_uri
local idx_tab = {}
for i = 1, uri_param_tab_len do
local local_uri_key=uri_param_tab[i]
local http_uri_arg_value = args[local_uri_key]
if (http_uri_arg_value == nil) then
exists = false
break
end
-- decide key param location and sequence
local idx_begin = string.find(original_uri, local_uri_key, 1, true)
if (idx_begin == nil) then
exists = false
break
end
table.insert(idx_tab,idx_begin)
end
if (exists == true) then
for i = 1, #idx_tab do
for j = i+1,#idx_tab do
-- ngx.say("=i=",idx_tab[i],"=j=",idx_tab[j],"=end=")
if not (idx_tab[i] < idx_tab[j]) then
exists = false
return exists
end
end
end
end
return exists
end
3、配置使用
配置示例如下:
uri_keyword_list=>key1,key2
uri_value_list=>value1,value2
uri_param_seqkey_list=>paramKey1,paramKey2,paramKey3,paramKey4,paramKey5
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
<context-param> 和<init-param>的 区别代码 博文链接:https://xhy0422.iteye.com/blog/46319
nutch-param-setnutch-param-setnutch-param-setnutch-param-set
NULL 博文链接:https://wy649898543.iteye.com/blog/1833263
本篇文章是对web.xml中在Servlet中获取context-param和init-param内的参数进行了详细的分析介绍,需要的朋友参考下
* @param throwable the cause which has been caught. It's detail message and * stacktrace are the parts the information will be shown. */ public ExceptionManager(Throwable throwable){ ...
mybatis-param-clazzStudent-222mybatis-param-clazzStudent-222
Laravel开发-laravel-query-param 使用Laravel的数据库系统正确处理二进制数据(雄辩)
npm使用参数登录 一个简单的脚本,可从命令行登录npm,以防您没有交互式外壳, expect或其他任何花哨的东西。 该软件包允许您为登录过程提供参数,...npx npm-login-with-param 这个怎么运作 这是一个简单的子进程,
前端开源库-jquery-param-fnjquery param fn,替代jquery的param函数。
了解web.xml的配置信息和加载顺序,有助于理解框架的流程,
Laravel开发-laravel-query-param .zip
Product.insert-product-param
前端开源库-jquery-param-fn.zip
jQuery参数产品特点等效于jQuery.param(基于jQuery 3.x) 没有依赖关系通用(同构) ES模块支持安装Node.js: npm install jquery-param --save 浏览器: < script src =" /path/to/jquery-param.min.js " > ...
<param-value>token,Access-Control-Allow-Origin,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> --> <param-value>Access-Control...
$ npm install node-request-slim 测试 # 启动测试服务器 $ node test/server/app.js # 测试 $ mocha 参数 /** * @param {String || Object} options 必选,如果是string类型就认为是url * @param {String} ...
ncnn load-param 加载参数的最小化实现