Skip to content

Commit

Permalink
fix: handle relative and invalid URLs in redirects when passing URL t…
Browse files Browse the repository at this point in the history
…o loadImage() (#866)

* fix: handle invalid urls in load-image.js (#865)

* fix: handle relative urls in redirects (#865)

---------

Co-authored-by: LongYinan <lynweklm@gmail.com>
  • Loading branch information
lostfictions and Brooooooklyn committed Aug 14, 2024
1 parent 740075d commit 1666a33
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions load-image.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,18 @@ function makeRequest(url, resolve, reject, redirectCount, requestOptions) {

lib
.get(url.toString(), requestOptions || {}, (res) => {
const shouldRedirect = REDIRECT_STATUSES.has(res.statusCode) && typeof res.headers.location === 'string'
if (shouldRedirect && redirectCount > 0)
return makeRequest(new URL(res.headers.location), resolve, reject, redirectCount - 1, requestOptions)
if (typeof res.statusCode === 'number' && (res.statusCode < 200 || res.statusCode >= 300)) {
return reject(new Error(`remote source rejected with status code ${res.statusCode}`))
try {
const shouldRedirect = REDIRECT_STATUSES.has(res.statusCode) && typeof res.headers.location === 'string'
if (shouldRedirect && redirectCount > 0)
return makeRequest(new URL(res.headers.location, url.origin), resolve, reject, redirectCount - 1, requestOptions)
if (typeof res.statusCode === 'number' && (res.statusCode < 200 || res.statusCode >= 300)) {
return reject(new Error(`remote source rejected with status code ${res.statusCode}`))
}

consumeStream(res).then(resolve, reject)
} catch (err) {
reject(err)
}

consumeStream(res).then(resolve, reject)
})
.on('error', reject)
}
Expand Down

0 comments on commit 1666a33

Please sign in to comment.