ASF Bugzilla – Attachment 34220 Details for
Bug 60013
Non-ASCII characters in querystring get mangled after URL Rewrite using RewriteValve
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
B flag failure cases
TestRedirect.java (text/plain), 2.37 KB, created by
Santhana Preethi
on 2016-09-07 12:19:10 UTC
(
hide
)
Description:
B flag failure cases
Filename:
MIME Type:
Creator:
Santhana Preethi
Created:
2016-09-07 12:19:10 UTC
Size:
2.37 KB
patch
obsolete
>package org.apache.catalina.valves.rewrite; > >import java.nio.charset.StandardCharsets; > >import org.junit.Assert; >import org.junit.Test; > >import org.apache.catalina.Context; >import org.apache.catalina.servlets.DefaultServlet; >import org.apache.catalina.startup.Tomcat; >import org.apache.catalina.startup.TomcatBaseTest; >import org.apache.tomcat.util.buf.ByteChunk; > >public class TestRedirect extends TomcatBaseTest { > > > @Test > public void testNonAsciiQueryString() throws Exception { > doTestRewrite("RewriteRule ^/b/(.*)/(.*) /c?filename=$1&$2 [B]", "/b/file01/id=%E5%9C%A8%E7%BA%BF%E6%B5%8B%E8%AF%95", > "/c", "filename=file01&id=%E5%9C%A8%E7%BA%BF%E6%B5%8B%E8%AF%95"); > } > > > @Test > public void testNonAsciiQueryStringAndRedirectPath() throws Exception { > doTestRewrite("RewriteRule ^/b/(.*)/(.*)/(.*) /c/$1?filename=$2&$3 [B,R]", "/b/%E5%9C%A8%E7%BA%BF/file01/id=%E6%B5%8B%E8%AF%95", > "/c/%E5%9C%A8%E7%BA%BF", "filename=file01&id=%E6%B5%8B%E8%AF%95"); > } > > > > @SuppressWarnings("deprecation") > private void doTestRewrite(String config, String request, String expectedURI, > String expectedQueryString) throws Exception { > > Tomcat tomcat = getTomcatInstance(); > > // No file system docBase required > Context ctx = tomcat.addContext("", null); > > RewriteValve rewriteValve = new RewriteValve(); > ctx.getPipeline().addValve(rewriteValve); > > rewriteValve.setConfiguration(config); > > Tomcat.addServlet(ctx, "snoop", new SnoopServlet()); > ctx.addServletMappingDecoded("/a/%5A", "snoop"); > ctx.addServletMappingDecoded("/c/*", "snoop"); > Tomcat.addServlet(ctx, "default", new DefaultServlet()); > ctx.addServletMappingDecoded("/", "default"); > > tomcat.start(); > > ByteChunk res = getUrl("http://localhost:" + getPort() + request); > res.setCharset(StandardCharsets.UTF_8); > > String body = res.toString(); > RequestDescriptor requestDesc = SnoopResult.parse(body); > //System.out.println(request+" "+ body); > String requestURI = requestDesc.getRequestInfo("REQUEST-URI"); > Assert.assertEquals(expectedURI, requestURI); > > if (expectedQueryString != null) { > String queryString = requestDesc.getRequestInfo("REQUEST-QUERY-STRING"); > Assert.assertEquals(expectedQueryString, queryString); > } > } >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 60013
:
34176
|
34177
|
34178
|
34205
|
34208
|
34209
| 34220 |
34226
|
34247
|
34281