Skip to content

Commit dd8d70c

Browse files
fix(core): URL encode presigned URL query parameter values
Presigned URL output was missing percent encoding on values, causing inconsistency with Python/Go SDKs (e.g. X-Host=https://... instead of X-Host=https%3A%2F%2F...).
1 parent 44d8915 commit dd8d70c

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

volcengine-java-sdk-core/src/main/java/com/volcengine/interceptor/SignRequestInterceptor.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.apache.commons.lang.StringUtils;
1515

1616
import java.io.IOException;
17+
import java.io.UnsupportedEncodingException;
18+
import java.net.URLEncoder;
1719
import java.util.*;
1820

1921
public class SignRequestInterceptor implements RequestInterceptor {
@@ -134,7 +136,13 @@ private static String buildPresignedUrl(String scheme, String host, Map<String,
134136
for (int i = 0; i < keys.size(); i++) {
135137
String key = keys.get(i);
136138
String value = presignedParams.get(key);
137-
url.append(key).append("=").append(value);
139+
try {
140+
url.append(key)
141+
.append("=")
142+
.append(URLEncoder.encode(value, "UTF-8").replace("+", "%20"));
143+
} catch (UnsupportedEncodingException e) {
144+
url.append(key).append("=").append(value);
145+
}
138146
if (i < keys.size() - 1) {
139147
url.append("&");
140148
}

0 commit comments

Comments
 (0)