pub struct SecureRedirectPolicy { /* private fields */ }Expand description
A security-hardened redirect policy
Implements tower_http::follow_redirect::policy::Policy with configurable
security controls.
§Security Features
- Same-origin enforcement: By default, only follows redirects to the same host
- Header stripping: Removes
Authorization,Cookieon cross-origin redirects - Downgrade protection: Blocks HTTPS → HTTP redirects
- Host allow-list: Configurable list of trusted redirect targets
§Example
ⓘ
use modkit_http::{SecureRedirectPolicy, RedirectConfig};
let policy = SecureRedirectPolicy::new(RedirectConfig::default());Implementations§
Source§impl SecureRedirectPolicy
impl SecureRedirectPolicy
Sourcepub fn new(config: RedirectConfig) -> Self
pub fn new(config: RedirectConfig) -> Self
Create a new secure redirect policy with the given configuration
Trait Implementations§
Source§impl Clone for SecureRedirectPolicy
impl Clone for SecureRedirectPolicy
Source§fn clone(&self) -> SecureRedirectPolicy
fn clone(&self) -> SecureRedirectPolicy
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SecureRedirectPolicy
impl Debug for SecureRedirectPolicy
Source§impl<B: Clone, E> Policy<B, E> for SecureRedirectPolicy
impl<B: Clone, E> Policy<B, E> for SecureRedirectPolicy
Source§fn redirect(&mut self, attempt: &Attempt<'_>) -> Result<Action, E>
fn redirect(&mut self, attempt: &Attempt<'_>) -> Result<Action, E>
Invoked when the service received a response with a redirection status code (
3xx). Read moreSource§fn on_request(&mut self, request: &mut Request<B>)
fn on_request(&mut self, request: &mut Request<B>)
Invoked right before the service makes a request, regardless of whether it is redirected
or not. Read more
Auto Trait Implementations§
impl Freeze for SecureRedirectPolicy
impl RefUnwindSafe for SecureRedirectPolicy
impl Send for SecureRedirectPolicy
impl Sync for SecureRedirectPolicy
impl Unpin for SecureRedirectPolicy
impl UnwindSafe for SecureRedirectPolicy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more
Source§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
Source§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
Add request id header and extension. Read more
Source§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
Add request id header and extension, using
x-request-id as the header name. Read moreSource§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
Propgate request ids from requests to responses. Read more
Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
Propgate request ids from requests to responses, using
x-request-id as the header name. Read moreSource§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
Intercept requests with over-sized payloads and convert them into
413 Payload Too Large responses. Read more