DioxusLabs/dioxus · error
SetHeader must have data to set
Error message
SetHeader must have data to set
What it means
Internal invariant: SetHeader was used as a response part but its data field was None. The type was constructed through a path that skipped new(), which always sets data; firing indicates an externally constructed invalid value.
Source
Thrown at packages/fullstack/src/payloads/header.rs:27
}
impl<T: Header> SetHeader<T> {
pub fn new(
value: impl TryInto<HeaderValue, Error = InvalidHeaderValue>,
) -> Result<Self, headers::Error> {
let values = value.try_into().map_err(|_| headers::Error::invalid())?;
let res = T::decode(&mut std::iter::once(&values))?;
Ok(Self { data: Some(res) })
}
}
impl<T: Header> IntoResponseParts for SetHeader<T> {
type Error = ();
fn into_response_parts(self, res: ResponseParts) -> Result<ResponseParts, Self::Error> {
let data = self.data.expect("SetHeader must have data to set");
let mut headers = vec![];
data.encode(&mut headers);
Ok(axum::response::AppendHeaders(
headers.into_iter().map(|value| (T::name().clone(), value)),
)
.into_response_parts(res)
.unwrap())
}
}
impl<T: Header> FromResponseParts for SetHeader<T> {
fn from_response_parts(parts: &mut axum::http::response::Parts) -> Result<Self, ServerFnError> {
let Some(header) = parts.headers.remove(T::name()) else {
return Ok(SetHeader { data: None });
};
View on GitHub (pinned to 24f6a829df)
Solutions
- Provide header data when constructing the SetHeader payload; an empty SetHeader cannot be applied.
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at packages/fullstack/src/payloads/header.rs:27 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of DioxusLabs/dioxus@24f6a829df (2026-08-23).
Data as JSON: /api/errors/9e210f5575bb2b34.
Report an issue: GitHub.