diff --git a/src/routes/webfinger.rs b/src/routes/webfinger.rs index fd865ba..78651aa 100644 --- a/src/routes/webfinger.rs +++ b/src/routes/webfinger.rs @@ -72,12 +72,14 @@ impl WebfingerResource { return Err(ErrorKind::MissingAccept); }; - let accept = accept.to_str().map_err(|_| ErrorKind::InvalidAccept)?; - let accept = accept - .parse::() - .map_err(|_| ErrorKind::InvalidAccept)?; + let accept_value = accept.to_str().map_err(|_| ErrorKind::InvalidAccept)?; - if !is_supported_json(&accept) { + let acceptable = accept_value + .split(", ") + .filter_map(|accept| accept.trim().parse::().ok()) + .any(|accept| is_supported_json(&accept)); + + if !acceptable { return Err(ErrorKind::InvalidAccept); }