fix(http): accept path-only url when socketPath is set (#6611)#10930
Merged
jasonsaayman merged 5 commits intoJun 16, 2026
Conversation
73c1dbc to
181b089
Compare
fa1650a to
8610d28
Compare
8610d28 to
3a10764
Compare
jasonsaayman
requested changes
May 27, 2026
jasonsaayman
left a comment
Member
There was a problem hiding this comment.
Mostly looking good, let's just fix the potential regression and add the additional test.
…ath-only-url # Conflicts: # PRE_RELEASE_CHANGELOG.md # lib/adapters/http.js
jasonsaayman
approved these changes
Jun 16, 2026
leuwen-lc
pushed a commit
to leuwen-lc/rhdemo
that referenced
this pull request
Jul 9, 2026
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [axios](https://axios-http.com) ([source](https://github.com/axios/axios)) | [`1.18.0` → `1.18.1`](https://renovatebot.com/diffs/npm/axios/1.18.0/1.18.1) |  |  | --- ### Release Notes <details> <summary>axios/axios (axios)</summary> ### [`v1.18.1`](https://github.com/axios/axios/releases/tag/v1.18.1) [Compare Source](axios/axios@v1.18.0...v1.18.1) #### v1.18.1 — June 21, 2026 This release focuses on Node HTTP adapter fixes, safer AxiosError serialisation, runtime/type correctness fixes, documentation updates, and dependency maintenance. #### 🐛 Bug Fixes - AxiosError Serialisation: Made AxiosError#cause non-enumerable to prevent circular JSON serialisation failures when errors include nested causes. ([#​10913](axios/axios#10913)) - Node HTTP Adapter: Guarded socket.setKeepAlive for proxy agent streams, accepted path-only URLs when socketPath is configured, deferred environment proxy handling to Node, and explicitly passed maxBodyLength through to follow-redirects. ([#​10917](axios/axios#10917), [#​10930](axios/axios#10930), [#​10942](axios/axios#10942), [#​10993](axios/axios#10993)) - Runtime and Type Correctness: Fixed several runtime crashes, type definition mismatches, and incorrect error handling paths. ([#​10959](axios/axios#10959), [#​11021](axios/axios#11021)) - AxiosURLSearchParams: Switched the encoder callback to an arrow function so `encoder.call(this)` receives the `AxiosURLSearchParams` instance correctly. ([#​11019](axios/axios#11019)) #### 🔧 Maintenance & Chores - Documentation: Documented sensitive headers and status transition behaviour, prepared cleaned-up docs, added Deno install instructions, and clarified that request data is request-specific ([#​11007](axios/axios#11007), [#​11010](axios/axios#11010), [#​11023](axios/axios#11023), [#​11025](axios/axios#11025)) - Dependencies: Bumped vite, rollup, form-data, js-yaml, and multer across the root project, docs, smoke tests, and module test workspaces. ([#​11011](axios/axios#11011), [#​11012](axios/axios#11012), [#​11013](axios/axios#11013), [#​11014](axios/axios#11014), [#​11015](axios/axios#11015), [#​11016](axios/axios#11016), [#​11017](axios/axios#11017), [#​11026](axios/axios#11026)) #### 🌟 New Contributors We are thrilled to welcome our new contributors. Thank you for helping improve axios: - [@​webdevelopersrinu](https://github.com/webdevelopersrinu) ([#​10913](axios/axios#10913)) - [@​sijie-Z](https://github.com/sijie-Z) ([#​10993](axios/axios#10993)) - [@​bartlomieju](https://github.com/bartlomieju) ([#​11023](axios/axios#11023)) - [@​JSap0914](https://github.com/JSap0914) ([#​11019](axios/axios#11019)) [Full Changelog](axios/axios@v1.18.0...v1.18.1) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTcuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxNy4xIiwidGFyZ2V0QnJhbmNoIjoiZXZvbHV0aW9ucy1wb3N0LTEuMS44IiwibGFiZWxzIjpbXX0=--> Co-authored-by: leuwen-lc <[email protected]> Reviewed-on: https://codeberg.org/leuwen-lc/rhdemo/pulls/178
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.
Summary
axios({ url: '/foo', socketPath: '/tmp/x.sock' })worked in 1.7.3 and started throwingTypeError [ERR_INVALID_URL]in 1.7.4 whennew URL(fullPath, ...)was added to the node dispatch path.new URL('/foo')rejects path-only URLs because no base is supplied.This restores the 1.7.3 behaviour by supplying a synthetic
http://localhostbase only whenconfig.socketPathis set. Non-socket requests are untouched; absolute URLs continue to ignore the base per the URL spec, so this is a no-op for those cases.Follows @jasonsaayman's guidance on the earlier attempt (#6623): "detect
config.socketPathand synthesise a base (http://localhost) … with a test."Linked issue
Closes #6611
Changes
lib/adapters/http.js: pick'http://localhost'as thenew URL()base whenconfig.socketPathis set; keepplatform.origin/undefinedfor all other cases.tests/unit/adapters/http.test.js: regression test in the existingsocketPath securitydescribe block —axios.get('/echo?q=1', { socketPath })reaches the Unix server withreq.url === '/echo?q=1'. Verified the test fails onv1.x(sameInvalid URLerror from the issue's stack trace) and passes with this patch.PRE_RELEASE_CHANGELOG.md: bug-fix entry under Unreleased.Checklist
index.d.tsandindex.d.cts) — N/A, no public API changeAI-assisted (Claude Opus 4.7). Commit subject is one line per author preference; happy to amend in an
Assisted-by:trailer if reviewers prefer.Summary by cubic
Restores support for path-only URLs like
/foowhensocketPathis set in Node, and ignores prototype-pollutedsocketPathvalues. Only socket requests get a synthetichttp://localhostbase; all other URLs are unchanged.Description
Summary of changes
lib/adapters/http.js: readsocketPathviaown('socketPath'); if set, usehttp://localhostas thenew URL()base; otherwise keep existing base logic.allowedSocketPaths, plus a security test that ignores prototype-pollutedsocketPath.Reasoning
new URL('/foo')needs a base. Supplying one only for real socket requests restores 1.7.3 behavior and prevents prototype pollution.Additional context
Docs
Add a note in
/docs/(Node HTTP adapter / Unix sockets) that:socketPathis set.socketPathis honored for security.Testing
socketPath.allowedSocketPaths.socketPath(assertsERR_INVALID_URLand zero requests).Semantic version impact
Patch.
Written for commit 02d8f0b. Summary will update on new commits.