1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-29 06:25:07 +00:00

LibWeb: Support <form method=POST>

Use the new support for HTTP method and request body to implement basic
support for POST'ed forms. This is pretty cool! :^)
This commit is contained in:
Andreas Kling 2020-09-28 11:56:26 +02:00
parent 2946a684ef
commit ceda137bf2

View file

@ -50,8 +50,8 @@ void HTMLFormElement::submit(RefPtr<HTMLInputElement> submitter)
} }
auto effective_method = method().to_lowercase(); auto effective_method = method().to_lowercase();
if (effective_method != "get") { if (effective_method != "get" && effective_method != "post") {
if (effective_method == "post" || effective_method == "dialog") { if (effective_method == "dialog") {
dbg() << "Unsupported form method '" << method() << "'"; dbg() << "Unsupported form method '" << method() << "'";
return; return;
} }
@ -69,10 +69,24 @@ void HTMLFormElement::submit(RefPtr<HTMLInputElement> submitter)
return IterationDecision::Continue; return IterationDecision::Continue;
}); });
if (effective_method == "get") {
url.set_query(urlencode(parameters)); url.set_query(urlencode(parameters));
}
// FIXME: We shouldn't let the form just do this willy-nilly. // FIXME: We shouldn't let the form just do this willy-nilly.
document().frame()->page().load(url);
LoadRequest request;
request.set_url(url);
if (effective_method == "post") {
auto body = urlencode(parameters).to_byte_buffer();
request.set_method("POST");
request.set_header("Content-Type", "application/x-www-form-urlencoded");
request.set_header("Content-Length", String::number(body.size()));
request.set_body(body);
}
document().frame()->page().load(request);
} }
} }