mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:47:34 +00:00
LibHTTP: Percent encode/decode request URI
This percent encodes/decodes the request URI when creating or parsing raw HTTP requests. This is necessary because AK::URL now contains percent decoded data, meaning we have to re-encode it for creating raw requests.
This commit is contained in:
parent
c7857f3572
commit
ce80188d6f
1 changed files with 6 additions and 6 deletions
|
@ -37,13 +37,13 @@ ByteBuffer HttpRequest::to_raw_request() const
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
builder.append(method_name());
|
builder.append(method_name());
|
||||||
builder.append(' ');
|
builder.append(' ');
|
||||||
if (!m_url.path().is_empty())
|
// NOTE: The percent_encode is so that e.g. spaces are properly encoded.
|
||||||
builder.append(m_url.path());
|
auto path = m_url.path();
|
||||||
else
|
VERIFY(!path.is_empty());
|
||||||
builder.append('/');
|
builder.append(URL::percent_encode(m_url.path(), URL::PercentEncodeSet::EncodeURI));
|
||||||
if (!m_url.query().is_empty()) {
|
if (!m_url.query().is_empty()) {
|
||||||
builder.append('?');
|
builder.append('?');
|
||||||
builder.append(m_url.query());
|
builder.append(URL::percent_encode(m_url.query(), URL::PercentEncodeSet::EncodeURI));
|
||||||
}
|
}
|
||||||
builder.append(" HTTP/1.1\r\nHost: ");
|
builder.append(" HTTP/1.1\r\nHost: ");
|
||||||
builder.append(m_url.host());
|
builder.append(m_url.host());
|
||||||
|
@ -163,7 +163,7 @@ Optional<HttpRequest> HttpRequest::from_raw_request(ReadonlyBytes raw_request)
|
||||||
else
|
else
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
request.m_resource = resource;
|
request.m_resource = URL::percent_decode(resource);
|
||||||
request.m_headers = move(headers);
|
request.m_headers = move(headers);
|
||||||
|
|
||||||
return request;
|
return request;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue