fix(buildURL): preserve encoded colon (%3A) for JSON-stringified params#7290
Open
Amaan-pathan wants to merge 1 commit intoaxios:v1.xfrom
Open
fix(buildURL): preserve encoded colon (%3A) for JSON-stringified params#7290Amaan-pathan wants to merge 1 commit intoaxios:v1.xfrom
Amaan-pathan wants to merge 1 commit intoaxios:v1.xfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR fixes an issue where colons inside JSON-stringified params were not being consistently encoded. In some environments Axios was converting %3A back to :, while in others it preserved the encoding. This led to unpredictable behavior when APIs expected strictly encoded JSON in query parameters.
To address this, I added a small helper (isJSONLike) that detects when a param value looks like JSON (e.g., "{...}" or "[...]"). If the value is JSON-formatted, the colon remains encoded as %3A. For all non-JSON values, Axios continues to follow its existing encoding rules, so backward compatibility is preserved.
What’s Changed
Added isJSONLike check inside encode()
Ensured JSON-stringified params keep %3A instead of decoding to :
Updated buildURL tests to cover:
JSON-like params
nested objects
arrays, dates, and special characters
custom serializer functions
URLs that already contain a query string