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
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </context-param> ``` 在这个例子中,`contextConfigLocation` 参数指定了Spring配置文件的位置,使得Servlet容器知道在哪里加载...
<param-name>paramName</param-name> <param-value>paramValue</param-value> </context-param> ``` `param-name`是参数的唯一标识,`param-value`是对应的值。`<context-param>`通常用于设置Spring框架的配置...
web.xml中<context-param>等配置的作用 了解 web.xml 的配置信息和加载顺序对于理解框架的流程至关重要。在 web.xml 中,<context-param> 配置起着非常重要的作用,它在 web 项目启动时发挥着关键的作用。 首先,...
在这里,`<param-name>`标签定义了参数名,`<param-value>`标签定义了参数值。要从Servlet中获取`context-param`,可以通过以下代码实现: ```java String contextParamValue = getServletContext()....
在Laravel框架中,`laravel-query-param`通常指的是如何在路由、控制器和查询构建器中处理URL查询参数。Laravel提供了优雅的方式来处理HTTP请求,包括查询参数,这对于开发高效和用户友好的API或者Web应用至关重要。...
`jquery-param-fn` 提供了更灵活的接口,允许开发者自定义序列化函数。这可以让你按照特定的格式处理参数,比如在处理嵌套的对象或者数组时,可以定制它们的键值对形式。此外,这个库可能还支持处理特殊类型的数据,...
* @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){ ...
`jquery-param-fn.zip`这个压缩包可能包含了一个与jQuery相关的函数,用于处理参数序列化,这在进行Ajax请求时特别有用。在前端与服务器进行异步数据交换时,通常需要将对象或数组转换为URL查询字符串格式,`jQuery....
public function handle(Request $request) { $keyword = $request->input('keyword'); $category = $request->input('category'); // 进行搜索操作,例如: $results = Model::where('keyword', $keyword)->...
npm使用参数登录 一个简单的脚本,可从命令行登录npm,以防您没有交互式外壳, expect或其他任何花哨的东西。 该软件包允许您为登录过程提供参数,...npx npm-login-with-param 这个怎么运作 这是一个简单的子进程,
总的来说,`Laravel开发-normalization-request-uri`关注的是如何确保Laravel框架能够正确处理各种格式的请求URI,保证路由到正确的控制器和方法,提供一致的用户体验。通过对`normalization-request-uri-master`...
在IT行业中,"Product.insert-product-param" 这个标题很可能是指一个特定的产品管理系统的API接口,用于插入新的产品参数。这个接口可能是系统的核心功能之一,允许开发者或系统管理员向产品数据库中添加新产品或...
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...
在这个特定的场景中,提到的"将cam-param作为外部参数传入"涉及到了在ONNX模型中使用自定义参数,特别是相机参数,这在计算机视觉任务中非常常见。 相机参数(cam-param)通常包括内参矩阵、外参矩阵等,用于描述...
$ npm install node-request-slim 测试 # 启动测试服务器 $ node test/server/app.js # 测试 $ mocha 参数 /** * @param {String || Object} options 必选,如果是string类型就认为是url * @param {String} ...