Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails URL映射字母数字id_Url_Grails_Controller_Mapping_Url Mapping - Fatal编程技术网

Grails URL映射字母数字id

Grails URL映射字母数字id,url,grails,controller,mapping,url-mapping,Url,Grails,Controller,Mapping,Url Mapping,我设法拥有一个分配了生成器的字符串id域,因此要显示/编辑的url是/controller/action/alphanumeric\u id 在我进行漏洞测试之前,它工作得很好,所以当id包含斜杠(和反斜杠)时,我发现了一个问题,即使使用%2F(和%5C)编码,浏览器也会给出400个错误请求错误 我的映射是默认的/$controller/$action?/$id?,我使用验证器查看约束,以查看发生了什么,但当包含这些字符时,请求甚至没有到达那里 如果我访问/controller/action/?

我设法拥有一个分配了生成器的字符串id域,因此要显示/编辑的url是
/controller/action/alphanumeric\u id

在我进行漏洞测试之前,它工作得很好,所以当id包含斜杠(和反斜杠)时,我发现了一个问题,即使使用%2F(和%5C)编码,浏览器也会给出400个错误请求错误

我的映射是默认的
/$controller/$action?/$id?
,我使用验证器查看约束,以查看发生了什么,但当包含这些字符时,请求甚至没有到达那里

如果我访问
/controller/action/?id=alphanumeric\u id
一切都很顺利,但我想知道是否没有办法继续使用默认的短url

编辑:

  • 创建一个新的grails应用程序(我的版本是2.1.3)
  • 创建控制器
  • 在任何操作中执行
    println params.id
    ,如果需要,也可以在UrlMapping中执行
  • 尝试通过
    /appname/controller/action/abc
    访问控制器,一切正常
  • 现在尝试
    /appname/controller/action/a%2Fbc
    /appname/controller/action/a%5Cbc
    ,它给出了400个错误请求
  • 使用
    %00
    %FF
    的其他组合也应该可以工作,但不是所有组合都可以,顺便说一句,
    %00
    也不能工作

有缺陷的组合:
%00
%2F
%5C

您可以尝试以下映射:
/$controller/$action?/$id**?
可能只针对需要此url格式的控制器/操作更具体一些?@tim_yates抱歉,不起作用,但这是个想法。您使用的是什么版本的grails?也许?2.1.3,但我还没有空间问题。