在测试中使用MockMVC,我需要测试已经URL编码的GET URL:
http://host:port/app/controller/[ALREADY URL ENCODED]
Run Code Online (Sandbox Code Playgroud)
代码:
mockmvc.perform(get("/controller/[ALREADY URL ENCODED]")
Run Code Online (Sandbox Code Playgroud)
但是在日志中我看到URL在到达适当的控制器方法之前已经被再次进行了url编码.有没有办法可以阻止spring mockmvc进行url编码?也许在测试中禁用url编码?
"[ALREADY URL ENCODED]"字符串的真实示例:
MEUwQzBBMD8wPTAJBgUrDgMCGgUABBQ%2Fm36Fj2BE19VBYXRO62zrgIYp0gQVAQazEyvlq22wsMBkRyAeaUiZ%2BhTUAgMGJbQ%3D
Run Code Online (Sandbox Code Playgroud)
这会在控制器看到之前再次对URL进行编码.
这是来自日志(该字符串已被重新编码)
xxxxx [main] DEBUG [o.s.t.w.s.TestDispatcherServlet] DispatcherServlet with name '' processing GET request for [/app/controller/MEUwQzBBMD8wPTAJBgUrDgMCGgUABBQ%252Fm36Fj2BE19VBYXRO62zrgIYp0gQVAQazEyvlq22wsMBkRyAeaUiZ%252BhTUAgMGJbQ%253D]
Run Code Online (Sandbox Code Playgroud)
请注意,如果我使用CURL调用,则spring框架不会执行url编码,并且控制器会获取发送的内容.但是,mockmvc会在进入适当的控制器方法之前进行编码.
curl -X GET http:host:port/app/controller/[ALREADY URL ENCODED]
Run Code Online (Sandbox Code Playgroud)
谢谢.
有没有更简单的方法来找出在构建openssl期间指定的选项,例如当时是否定义了OPENSSL_NO_SRTP?我只能从以下内容中浏览有限的信息:
openssl version -a
命令。但是,如果我只有二进制文件,是否有办法找出诸如此类的选项?该问题背后的原因是,如果未使用此选项编译openssl,则会引入漏洞“ CVE-2014-3513”。
以下是一个脚本,其中空变量被单引号替换。如果变量不为空,则我们具有正确的替换。
$ set -x; aa=""; bb=`curl "$aa" -vvv`; set +x
+ aa=
++ curl '' -vvv
Run Code Online (Sandbox Code Playgroud)
需要注意的是,单引号代替了空变量。
当变量不为空时,一切工作正常,如下所示:
$ set -x; aa="google.com"; bb=`curl "$aa" -vvv`; set +x
+ aa=google.com
++ curl google.com -vvv
Run Code Online (Sandbox Code Playgroud)
问题1:为什么使用空变量或带空格的变量导致引入单引号?Q2:如何防止单引号代替空变量?
现在,我可以删除双引号,并且一切正常,但是如果有的话,我需要保留空格。
谢谢。