Author: markt
Date: Tue Aug 23 13:22:52 2016
New Revision: 1757363
URL: http://svn.apache.org/viewvc?rev=1757363&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=60013
Add a test case
Modified:
tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1757363&r1=1757362&r2=1757363&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Tue Aug 23
13:22:52 2016
@@ -827,7 +827,7 @@ public final class CorsFilter extends Ge
}
// RFC6454, section 4. "If uri-scheme is file, the implementation MAY
- // return an implementation-defined value.". No limits are okaced on
+ // return an implementation-defined value.". No limits are placed on
// that value so treat all file URIs as valid origins.
if (origin.startsWith("file://")) {
return true;
Modified: tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java?rev=1757363&r1=1757362&r2=1757363&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java Tue Aug
23 13:22:52 2016
@@ -453,12 +453,13 @@ public abstract class TomcatBaseTest ext
StringBuilder value;
Object attribute;
+ response.setContentType("text/plain");
+ response.setCharacterEncoding("UTF-8");
+
ServletContext ctx = this.getServletContext();
HttpSession session = request.getSession(false);
PrintWriter out = response.getWriter();
- response.setContentType("text/plain");
-
out.println("CONTEXT-NAME: " + ctx.getServletContextName());
out.println("CONTEXT-PATH: " + ctx.getContextPath());
out.println("CONTEXT-MAJOR-VERSION: " + ctx.getMajorVersion());
Modified:
tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java?rev=1757363&r1=1757362&r2=1757363&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
(original)
+++ tomcat/trunk/test/org/apache/catalina/valves/rewrite/TestRewriteValve.java
Tue Aug 23 13:22:52 2016
@@ -19,6 +19,8 @@ package org.apache.catalina.valves.rewri
import org.junit.Assert;
import org.junit.Test;
+import java.nio.charset.StandardCharsets;
+
import org.apache.catalina.Context;
import org.apache.catalina.servlets.DefaultServlet;
import org.apache.catalina.startup.Tomcat;
@@ -102,7 +104,28 @@ public class TestRewriteValve extends To
}
}
+ // https://bz.apache.org/bugzilla/show_bug.cgi?id=60013
+ @Test
+ public void testRewriteWithEncoding01() throws Exception {
+ doTestRewrite("RewriteRule ^/b/(.*)$ /c/?param=$1 [L]",
+ "/b/\u5728\u7EBF\u6D4B\u8BD5", "/c/",
"param=\u5728\u7EBF\u6D4B\u8BD5");
+ }
+
+ // https://bz.apache.org/bugzilla/show_bug.cgi?id=60013
+ // With % encoding
+ @Test
+ public void testRewriteWithEncoding02() throws Exception {
+ doTestRewrite("RewriteRule ^/b/(.*)$ /c/?param=$1 [L]",
+ "/b/%E5%9C%A8%E7%BA%BF%E6%B5%8B%E8%AF%95", "/c/",
"param=\u5728\u7EBF\u6D4B\u8BD5");
+ }
+
private void doTestRewrite(String config, String request, String
expectedURI) throws Exception {
+ doTestRewrite(config, request, expectedURI, null);
+ }
+
+ private void doTestRewrite(String config, String request, String
expectedURI,
+ String expectedQueryString) throws Exception {
+
Tomcat tomcat = getTomcatInstance();
// No file system docBase required
@@ -124,10 +147,16 @@ public class TestRewriteValve extends To
tomcat.start();
ByteChunk res = getUrl("http://localhost:" + getPort() + request);
+ res.setCharset(StandardCharsets.UTF_8);
String body = res.toString();
RequestDescriptor requestDesc = SnoopResult.parse(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);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]