(value: &HeaderValue)
| 537 | } |
| 538 | |
| 539 | fn sanitize_cookie_header(value: &HeaderValue) -> Option<HeaderValue> { |
| 540 | let value = value.to_str().ok()?; |
| 541 | let cookies = value |
| 542 | .split(';') |
| 543 | .filter_map(|cookie| { |
| 544 | let cookie = cookie.trim(); |
| 545 | let (name, _) = cookie.split_once('=')?; |
| 546 | (!is_gateway_auth_cookie(name.trim())).then_some(cookie) |
| 547 | }) |
| 548 | .collect::<Vec<_>>(); |
| 549 | |
| 550 | if cookies.is_empty() { |
| 551 | return None; |
| 552 | } |
| 553 | |
| 554 | HeaderValue::from_str(&cookies.join("; ")).ok() |
| 555 | } |
| 556 | |
| 557 | fn is_gateway_auth_cookie(name: &str) -> bool { |
| 558 | name.eq_ignore_ascii_case("CF_Authorization") || name.eq_ignore_ascii_case("cf-authorization") |
no test coverage detected