From 69a207d029d8f6391caca4848d787a5c47ced4d7 Mon Sep 17 00:00:00 2001 From: XieHan Date: Thu, 28 Jan 2021 23:25:14 +0800 Subject: [PATCH 1/2] Http redirect supports relative URI. (RFC 7231) --- src/factory/HttpTaskImpl.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/factory/HttpTaskImpl.cc b/src/factory/HttpTaskImpl.cc index bb0aae56..43c2d56a 100644 --- a/src/factory/HttpTaskImpl.cc +++ b/src/factory/HttpTaskImpl.cc @@ -277,6 +277,24 @@ bool ComplexHttpTask::redirect_url(HttpResponse *client_resp) return false; } + if (url[0] == '/') + { + if (url[1] != '/') + { + if (uri_.port) + { + url = uri_.port + url; + url = ":" + url; + } + + url = uri_.host + url; + url = "//" + url; + } + + url = ":" + url; + url = uri_.scheme + url; + } + URIParser::parse(url, uri_); return true; } From eb5ff6d443f19ac961338b1576164ea7ccf81d2c Mon Sep 17 00:00:00 2001 From: XieHan Date: Thu, 28 Jan 2021 23:37:54 +0800 Subject: [PATCH 2/2] simplify code --- src/factory/HttpTaskImpl.cc | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/factory/HttpTaskImpl.cc b/src/factory/HttpTaskImpl.cc index 43c2d56a..8baba64c 100644 --- a/src/factory/HttpTaskImpl.cc +++ b/src/factory/HttpTaskImpl.cc @@ -282,17 +282,12 @@ bool ComplexHttpTask::redirect_url(HttpResponse *client_resp) if (url[1] != '/') { if (uri_.port) - { - url = uri_.port + url; - url = ":" + url; - } + url = ':' + (uri_.port + url); - url = uri_.host + url; - url = "//" + url; + url = "//" + (uri_.host + url); } - url = ":" + url; - url = uri_.scheme + url; + url = uri_.scheme + (':' + url); } URIParser::parse(url, uri_);