From 00614476c68f0553432b4bb505e24d6ad5586ae4 Mon Sep 17 00:00:00 2001 From: Eugene Kabanov Date: Thu, 7 Sep 2023 16:25:25 +0300 Subject: [PATCH] Address issue #443. (#447) * Address issue #443. * Address review comments. --- chronos/apps/http/httpclient.nim | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/chronos/apps/http/httpclient.nim b/chronos/apps/http/httpclient.nim index b4b3202..1815d28 100644 --- a/chronos/apps/http/httpclient.nim +++ b/chronos/apps/http/httpclient.nim @@ -13,7 +13,7 @@ import ../../streams/[asyncstream, tlsstream, chunkstream, boundstream] import httptable, httpcommon, httpagent, httpbodyrw, multipart export results, asyncloop, asyncsync, asyncstream, tlsstream, chunkstream, boundstream, httptable, httpcommon, httpagent, httpbodyrw, multipart, - httputils + httputils, uri export SocketFlags const @@ -1420,8 +1420,13 @@ proc redirect*(request: HttpClientRequestRef, if redirectCount > request.session.maxRedirections: err("Maximum number of redirects exceeded") else: + let headers = + block: + var res = request.headers + res.set(HostHeader, ha.hostname) + res var res = HttpClientRequestRef.new(request.session, ha, request.meth, - request.version, request.flags, request.headers.toList(), request.buffer) + request.version, request.flags, headers.toList(), request.buffer) res.redirectCount = redirectCount ok(res) @@ -1438,8 +1443,14 @@ proc redirect*(request: HttpClientRequestRef, err("Maximum number of redirects exceeded") else: let address = ? request.session.redirect(request.address, uri) + # Update Host header to redirected URL hostname + let headers = + block: + var res = request.headers + res.set(HostHeader, address.hostname) + res var res = HttpClientRequestRef.new(request.session, address, request.meth, - request.version, request.flags, request.headers.toList(), request.buffer) + request.version, request.flags, headers.toList(), request.buffer) res.redirectCount = redirectCount ok(res)