diff --git a/headers/os/net/HttpRequest.h b/headers/os/net/HttpRequest.h index ccd0f52ad9..f613a151e7 100644 --- a/headers/os/net/HttpRequest.h +++ b/headers/os/net/HttpRequest.h @@ -81,6 +81,9 @@ private: void _SetResultStatusCode(int32 statusCode); BString& _ResultStatusText(); + // Utility methods + bool _IsDefaultPort(); + private: BAbstractSocket* fSocket; BNetworkAddress fRemoteAddr; diff --git a/src/kits/network/libnetapi/HttpRequest.cpp b/src/kits/network/libnetapi/HttpRequest.cpp index 8aec11cd1b..5fb393b1fe 100644 --- a/src/kits/network/libnetapi/HttpRequest.cpp +++ b/src/kits/network/libnetapi/HttpRequest.cpp @@ -815,7 +815,11 @@ BHttpRequest::_SendHeaders() { // HTTP 1.1 additional headers if (fHttpVersion == B_HTTP_11) { - fOutputHeaders.AddHeader("Host", Url().Host()); + BString host = Url().Host(); + if (Url().HasPort() && !_IsDefaultPort()) + host << ':' << Url().Port(); + + fOutputHeaders.AddHeader("Host", host); fOutputHeaders.AddHeader("Accept", "*/*"); fOutputHeaders.AddHeader("Accept-Encoding", "gzip,deflate"); @@ -1041,3 +1045,15 @@ BHttpRequest::_ResultStatusText() { return fResult.fStatusString; } + + +bool BHttpRequest::_IsDefaultPort() +{ + if (fSSL && Url().Port() == 443) + return true; + if (!fSSL && Url().Port() == 80) + return true; + return false; +} + +