@@ -203,7 +203,12 @@ impl RequestBuilder {
203203 match <HeaderName as TryFrom < K > >:: try_from ( key) {
204204 Ok ( key) => match <HeaderValue as TryFrom < V > >:: try_from ( value) {
205205 Ok ( mut value) => {
206- value. set_sensitive ( sensitive) ;
206+ // We want to potentially make an unsensitive header
207+ // to be sensitive, not the reverse. So, don't turn off
208+ // a previously sensitive header.
209+ if sensitive {
210+ value. set_sensitive ( true ) ;
211+ }
207212 req. headers_mut ( ) . append ( key, value) ;
208213 }
209214 Err ( e) => error = Some ( crate :: error:: builder ( e. into ( ) ) ) ,
@@ -840,6 +845,25 @@ mod tests {
840845 assert ! ( req. headers( ) [ "authorization" ] . is_sensitive( ) ) ;
841846 }
842847
848+ #[ test]
849+ fn test_explicit_sensitive_header ( ) {
850+ let client = Client :: new ( ) ;
851+ let some_url = "https://localhost/" ;
852+
853+ let mut header = http:: HeaderValue :: from_static ( "in plain sight" ) ;
854+ header. set_sensitive ( true ) ;
855+
856+ let req = client
857+ . get ( some_url)
858+ . header ( "hiding" , header)
859+ . build ( )
860+ . expect ( "request build" ) ;
861+
862+ assert_eq ! ( req. url( ) . as_str( ) , "https://localhost/" ) ;
863+ assert_eq ! ( req. headers( ) [ "hiding" ] , "in plain sight" ) ;
864+ assert ! ( req. headers( ) [ "hiding" ] . is_sensitive( ) ) ;
865+ }
866+
843867 #[ test]
844868 fn convert_from_http_request ( ) {
845869 let http_request = HttpRequest :: builder ( )
0 commit comments