Fix 'TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters'#42
Open
supermario wants to merge 2 commits intopwnall:masterfrom
Open
Fix 'TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters'#42supermario wants to merge 2 commits intopwnall:masterfrom
supermario wants to merge 2 commits intopwnall:masterfrom
Conversation
unescaped characters' It appears most browsers (tested in Firefox, Safari and Chromium[Chrome/Brave]) will url-encode paths automatically if they are not already encoded. `xhr2` doesn't match that behavior when run in node: using an unencoded URL will result in `TypeError [ERR_UNESCAPED_CHARACTERS]`. Just adding the encoding line however causes a new issue; already encoded URLs end up being double-encoded, changing the URL incorrectly. Using [`native-url`](https://github.com/GoogleChromeLabs/native-url instead of `url` fixes this, as well as removing the dependency on the deprecated [Legacy URL API](https://nodejs.org/api/url.html#url_legacy_url_api). It would have of course been better to refactor `xhr2` to not use the deprecated API, however this does not appear to be trivial looking at the [`native-url` code](https://github.com/GoogleChromeLabs/native-url/tree/master/src).
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.
It appears most browsers (tested in Firefox, Safari and Chromium[Chrome/Brave]) will url-encode paths automatically if they are not already encoded.
xhr2doesn't match that behaviour when run in node: using an unencoded URL will result inTypeError [ERR_UNESCAPED_CHARACTERS].Just adding the encoding line however causes a new issue; already encoded URLs end up being double-encoded, changing the URL incorrectly.
Using
native-urlinstead ofurlfixes this, as well as removing the dependency on the deprecated Legacy URL API.It would have of course been better to refactor
xhr2to not use the deprecated API, however this does not appear to be trivial looking at thenative-urlcode – at least, I am not able to do that work presently.I'm not necessarily expecting this to get merged (I think the fact that
xhr2has no dependencies is pretty nice!), but I figured it might be useful for anyone else that runs into theERR_UNESCAPED_CHARACTERSissue, or for the project maintainers as they're considering how to deal with the API deprecation.This probably resolves the issue referenced in #35 .