HTTP: Query Params Are Being Double Encoded Even When Encode=false

Description

Still trying to track down the root cause of this, but when putting an object via the S3SDK, a request to put

Results in the S3 path being URL encoded:

In Lucee and ACF there is no mutation of the path slashes.

Activity

Show:

Jon Clausen February 24, 2025 at 7:28 PM
Edited

Re-opening as URI will automatically de-code allowed characters. Which creates integrity issues with the put path below. So, for example:

A path of

when placed in to URI will return getPath() as

because it will automatically decode allowed characters as defined by the RFC.

Jon Clausen February 24, 2025 at 6:08 PM
Edited

This seems to have introduced a regression where paths like the following:

Now throw an error:

Jon Clausen February 23, 2025 at 6:57 PM

The root cause is that in our URIBuilder we return a new URI through the following:

Per the URI specification it states that may encode or re-encode special characters passed in to the query params. This is causing the double encoding.

Jon Clausen February 23, 2025 at 6:38 PM

Update The root cause is that we are double-encoding the query params, even though encoded is set to false

Jon Clausen February 23, 2025 at 6:27 PM

Actually, Lucee’s response on the list bucket is way more verbose, so I expect something in the header/request params is not being transmitted correctly:

Fixed
Pinned fields
Click on the next to a field label to start pinning.

Details

Assignee

Reporter

Fix versions

Priority

Sentry

Created February 23, 2025 at 6:05 PM
Updated February 25, 2025 at 12:46 AM
Resolved February 25, 2025 at 12:46 AM