From 5ee87f15e7e9dfbee629ba9e10b4890eadfca0c0 Mon Sep 17 00:00:00 2001 From: Fasterino Date: Fri, 31 Oct 2025 06:51:23 +0300 Subject: [PATCH] Header override bugfix --- .DS_Store | Bin 0 -> 6148 bytes src/server/actix_listener.rs | 6 +++++- src/server/reqwest_proxy.rs | 8 ++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..30e87d2f7948ee890199bb712e19ab7bbac5fde2 GIT binary patch literal 6148 zcmeHKPfrs;6n_I1wji>F7Lj<^*u)DYA|)DQ47FesFA$bs5wPyILs{AGG`m|W5|W-Z z@dNk){0tn8iC@8k7r%f9Po91AXM?qHHAd$pGr!mOZ#uut&f5V1Qfk$10+;|`;NX}V z!s!g*em;7nPg(jAiKsy#cH2?Y^_klftqqz1&A{Kr0DpG}AO;6Qs6+Srd*U{IFN$Yp zKa;-x)P;dTW6&5jcI-XYwqqx5MI|TP;=k4z^W8*u+zpSmD`s|)1+n7=G!zM5jbh05 z6ECQ-c8RruS|oC9=`hkpx?)Zq9Tf_N8LKdN`*_AWx-&OBW6c+C9UrHST>i%0waUKV z2-s^$BEd69$cVxO-k{R8C$D;-&Lr|N+0$3kOm>wX8ooGkY1GV&jc2l%TrM|pdGgBC zRHkB%yH0h#9`b*?$b1%-{1z>HRTkLZD_V}}%a|(_bL_XcHClUiYFa;RVodhbAZk4f zDGj#jp;uek-Hm8m{zc!cn4?iOWWK-3A}{t>u(=%}(aSMyEC;&`S3E$HSDM@vZO|}6 z?8zx_I$`Jpby_;y@g0}?D?y3HF>CNhUJW<08d6?KtZg@)su$Gr3*RM^`QmD#T$hRo zd8uGW$R?UXlK)Wc2z@r?w1>^-PT~GJG4g;SBb+jir-6{Il*$gPQjN!B0+Nv4Q z4E)Co@bkgK!Lg{YBT*b3IEgC&VhYVdQ0I3Eo?|I2D(px^4+@c~h%%L^D+ZD2Xtz{c zQDH}-Ob4PaA4IK8)D4A*)v>-M!hsYe>RB_O8R%w!fBU1Dy#GHq|Nbw6^rRWk4E&o6 zkkpdBRKmTf-rBQE-fJx!&v9_!aUF>w1t-;xg~D6$Bn~0yv$%p-RM?S-78Ly for HttpRequest { .map(|x| x.to_string()) .unwrap_or_else(|| req.uri().path().to_string()); - let headers: Vec<(String, String)> = req + let mut headers: Vec<(String, String)> = req .headers() .iter() .map(|(k, v)| (k.to_string(), v.to_str().unwrap_or("").to_string())) .collect(); + if !req.headers().contains_key("Host") { + headers.push(("Host".to_owned(), req.connection_info().host().to_owned())); + } + Self { method, path, diff --git a/src/server/reqwest_proxy.rs b/src/server/reqwest_proxy.rs index a459dac..0dc8688 100644 --- a/src/server/reqwest_proxy.rs +++ b/src/server/reqwest_proxy.rs @@ -4,6 +4,7 @@ use bytes::Bytes; use reqwest::{ Method, header::{HeaderMap, HeaderName, HeaderValue}, + redirect::Policy, }; use crate::settings::Result; @@ -18,14 +19,17 @@ pub struct ReqwestProxy { impl ServerProxyService for ReqwestProxy { async fn new() -> Arc { Self { - client: reqwest::Client::new(), + client: reqwest::ClientBuilder::new() + .redirect(Policy::none()) + .build() + .expect("Can't build client"), } .into() } async fn fetch(&self, req: HttpRequest, connection: Connection) -> Result { let mut headers = HeaderMap::new(); for (key, value) in req.headers { - headers.insert(key.parse::()?, value.parse::()?); + headers.append(key.parse::()?, value.parse::()?); } let res = self .client