diff --git a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp index 3644f10a9e86..1d603bd278d2 100644 --- a/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp +++ b/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp @@ -1620,8 +1620,14 @@ bool NetworkDataTaskSoup::shouldAllowHSTSProtocolUpgrade() const void NetworkDataTaskSoup::protocolUpgradedViaHSTS(SoupMessage* soupMessage) { - m_response = ResourceResponse::syntheticRedirectResponse(m_currentRequest.url(), soupURIToURL(soup_message_get_uri(soupMessage))); - continueHTTPRedirection(); + if (!m_response.isNull() && !m_response.httpHeaderField(HTTPHeaderName::Location).isEmpty()) { + // We handle HSTS upgrades as a redirection to let Web and UI processes know about the URL change, but in + // case of redirection, the new request is originated in the network process, so we can just update the URL. + m_currentRequest.setURL(soupURIToURL(soup_message_get_uri(m_soupMessage.get()))); + } else { + m_response = ResourceResponse::syntheticRedirectResponse(m_currentRequest.url(), soupURIToURL(soup_message_get_uri(soupMessage))); + continueHTTPRedirection(); + } } #if USE(SOUP2)