From c5b0f51cfd911cca9317b59efc718b570980129b Mon Sep 17 00:00:00 2001 From: Tony <68118705+Legend-Master@users.noreply.github.com> Date: Thu, 17 Apr 2025 10:09:49 +0800 Subject: [PATCH] fix(updater): don't override user provided headers (#2621) --- .changes/updater-override-header.md | 6 ++++++ plugins/updater/src/updater.rs | 13 +++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 .changes/updater-override-header.md diff --git a/.changes/updater-override-header.md b/.changes/updater-override-header.md new file mode 100644 index 00000000..7da472b0 --- /dev/null +++ b/.changes/updater-override-header.md @@ -0,0 +1,6 @@ +--- +updater: patch +updater-js: patch +--- + +Fix `check` and `download` overrides the `accept` header diff --git a/plugins/updater/src/updater.rs b/plugins/updater/src/updater.rs index ebd5523c..78fc0a9b 100644 --- a/plugins/updater/src/updater.rs +++ b/plugins/updater/src/updater.rs @@ -17,7 +17,7 @@ use std::ffi::OsStr; use base64::Engine; use futures_util::StreamExt; -use http::HeaderName; +use http::{header::ACCEPT, HeaderName}; use minisign_verify::{PublicKey, Signature}; use percent_encoding::{AsciiSet, CONTROLS}; use reqwest::{ @@ -345,7 +345,9 @@ impl Updater { pub async fn check(&self) -> Result> { // we want JSON only let mut headers = self.headers.clone(); - headers.insert("Accept", HeaderValue::from_str("application/json").unwrap()); + if !headers.contains_key(ACCEPT) { + headers.insert(ACCEPT, HeaderValue::from_static("application/json")); + } // Set SSL certs for linux if they aren't available. #[cfg(target_os = "linux")] @@ -549,10 +551,9 @@ impl Update { ) -> Result> { // set our headers let mut headers = self.headers.clone(); - headers.insert( - "Accept", - HeaderValue::from_str("application/octet-stream").unwrap(), - ); + if !headers.contains_key(ACCEPT) { + headers.insert(ACCEPT, HeaderValue::from_static("application/octet-stream")); + } let mut request = ClientBuilder::new().user_agent(UPDATER_USER_AGENT); if let Some(timeout) = self.timeout {