Always re-encode parameters

Assume UTF-8 encoding if not provided.  Reference #24.
pull/114/head
Andrew Gaul 2016-01-09 14:37:09 -08:00
rodzic c0d7cce353
commit e9baeb9c76
1 zmienionych plików z 6 dodań i 7 usunięć

Wyświetl plik

@ -59,6 +59,7 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.XMLStreamWriter;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.base.Objects;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.base.Throwables; import com.google.common.base.Throwables;
@ -2356,16 +2357,14 @@ final class S3ProxyHandler extends AbstractHandler {
List<String> parameters = Collections.list(request.getParameterNames()); List<String> parameters = Collections.list(request.getParameterNames());
Collections.sort(parameters); Collections.sort(parameters);
List<String> queryParameters = new ArrayList<>(); List<String> queryParameters = new ArrayList<>();
String charsetName = request.getQueryEncoding(); String charsetName = Objects.firstNonNull(request.getQueryEncoding(),
"UTF-8");
for (String key : parameters) { for (String key : parameters) {
String value = request.getParameter(key);
// The parameters are decoded by default, so we need to re-encode // The parameters are decoded by default, so we need to re-encode
// them // them
String value = request.getParameter(key); queryParameters.add(URLEncoder.encode(key, charsetName) +
if (charsetName != null) { "=" + URLEncoder.encode(value, charsetName));
key = URLEncoder.encode(key, charsetName);
value = URLEncoder.encode(value, charsetName);
}
queryParameters.add(key + "=" + value);
} }
return Joiner.on("&").join(queryParameters); return Joiner.on("&").join(queryParameters);
} }