From 89da988da11456a775cb5ae3fbc9802d78134762 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 27 Dec 2023 11:43:14 +0100 Subject: [PATCH] LibWeb: Honor User-Agent spoofing in Fetch headers This makes spoofing consistent between legacy ResourceLoader loads, Fetch loads, and the JavaScript `navigator` APIs. --- Userland/Libraries/LibWeb/Fetch/Fetching/Fetching.cpp | 2 +- .../Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp | 4 ++-- Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibWeb/Fetch/Fetching/Fetching.cpp b/Userland/Libraries/LibWeb/Fetch/Fetching/Fetching.cpp index 9873b770c9..32355f3bf6 100644 --- a/Userland/Libraries/LibWeb/Fetch/Fetching/Fetching.cpp +++ b/Userland/Libraries/LibWeb/Fetch/Fetching/Fetching.cpp @@ -1354,7 +1354,7 @@ WebIDL::ExceptionOr> http_network_or_cache_fet if (!http_request->header_list()->contains("User-Agent"sv.bytes())) { auto header = Infrastructure::Header { .name = MUST(ByteBuffer::copy("User-Agent"sv.bytes())), - .value = TRY_OR_THROW_OOM(vm, Infrastructure::default_user_agent_value()), + .value = Infrastructure::default_user_agent_value(), }; TRY_OR_THROW_OOM(vm, http_request->header_list()->append(move(header))); } diff --git a/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp b/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp index 6d0eccca21..eff6255479 100644 --- a/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp +++ b/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.cpp @@ -882,10 +882,10 @@ Optional parse_single_range_header_value(ReadonlyBytes value) } // https://fetch.spec.whatwg.org/#default-user-agent-value -ErrorOr default_user_agent_value() +ByteBuffer default_user_agent_value() { // A default `User-Agent` value is an implementation-defined header value for the `User-Agent` header. - return ByteBuffer::copy(default_user_agent.bytes()); + return MUST(ByteBuffer::copy(ResourceLoader::the().user_agent().bytes())); } } diff --git a/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.h b/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.h index 23f31652ed..85d9874670 100644 --- a/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.h +++ b/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/Headers.h @@ -93,6 +93,6 @@ struct ExtractHeaderParseFailure { [[nodiscard]] ErrorOr>> extract_header_values(Header const&); [[nodiscard]] ErrorOr, ExtractHeaderParseFailure, Empty>> extract_header_list_values(ReadonlyBytes, HeaderList const&); [[nodiscard]] Optional parse_single_range_header_value(ReadonlyBytes); -[[nodiscard]] ErrorOr default_user_agent_value(); +[[nodiscard]] ByteBuffer default_user_agent_value(); }