File tree Expand file tree Collapse file tree 4 files changed +34
-5
lines changed
GenericHostWebSite/Controllers Expand file tree Collapse file tree 4 files changed +34
-5
lines changed Original file line number Diff line number Diff line change @@ -144,9 +144,7 @@ private static void UpdateRedirectRequest(
144144 {
145145 if ( ! location . IsAbsoluteUri && response . RequestMessage . RequestUri is Uri requestUri )
146146 {
147- location = new Uri (
148- new Uri ( requestUri . GetLeftPart ( UriPartial . Authority ) ) ,
149- location ) ;
147+ location = new Uri ( requestUri , location ) ;
150148 }
151149
152150 redirect . RequestUri = location ;
Original file line number Diff line number Diff line change @@ -109,6 +109,19 @@ public async Task TestingInfrastructure_RedirectHandlerUsesOriginalRequestHeader
109109 Assert . Equal ( "false" , modifiedHeaderWasSent ) ;
110110 }
111111
112+ [ Fact ]
113+ public async Task TestingInfrastructure_RedirectHandlerHandlesRelativeLocation ( )
114+ {
115+ // Act
116+ var request = new HttpRequestMessage ( HttpMethod . Get , "Testing/RedirectHandler/Relative/" ) ;
117+ var client = Factory . CreateDefaultClient (
118+ new RedirectHandler ( ) ) ;
119+ var response = await client . SendAsync ( request ) ;
120+
121+ // Assert
122+ Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
123+ }
124+
112125 [ Fact ]
113126 public async Task TestingInfrastructure_RedirectHandlerFollowsStatusCode303 ( )
114127 {
Original file line number Diff line number Diff line change @@ -77,10 +77,19 @@ public IActionResult RedirectHandlerHeadersRedirect()
7777 }
7878 }
7979
80+ [ HttpGet ( "Testing/RedirectHandler/Relative/" ) ]
81+ public IActionResult RedirectHandlerRelative ( )
82+ {
83+ return Redirect ( "Ok" ) ;
84+ }
85+
86+ [ HttpGet ( "Testing/RedirectHandler/Relative/Ok" ) ]
87+ public IActionResult RedirectHandlerRelativeOk ( ) => Ok ( ) ;
88+
8089 [ HttpGet ( "Testing/RedirectHandler/Redirect303" ) ]
8190 public IActionResult RedirectHandlerStatusCode303 ( )
8291 {
83- return new RedirectUsingStatusCode ( "Testing/Builder" , HttpStatusCode . SeeOther ) ;
92+ return new RedirectUsingStatusCode ( "/ Testing/Builder" , HttpStatusCode . SeeOther ) ;
8493 }
8594
8695 public class RedirectUsingStatusCode : ActionResult
Original file line number Diff line number Diff line change @@ -63,10 +63,19 @@ public IActionResult RedirectHandlerHeadersRedirect()
6363 }
6464 }
6565
66+ [ HttpGet ( "Testing/RedirectHandler/Relative/" ) ]
67+ public IActionResult RedirectHandlerRelative ( )
68+ {
69+ return Redirect ( "Ok" ) ;
70+ }
71+
72+ [ HttpGet ( "Testing/RedirectHandler/Relative/Ok" ) ]
73+ public IActionResult RedirectHandlerRelativeOk ( ) => Ok ( ) ;
74+
6675 [ HttpGet ( "Testing/RedirectHandler/Redirect303" ) ]
6776 public IActionResult RedirectHandlerStatusCode303 ( )
6877 {
69- return new RedirectUsingStatusCode ( "Testing/Builder" , HttpStatusCode . SeeOther ) ;
78+ return new RedirectUsingStatusCode ( "/ Testing/Builder" , HttpStatusCode . SeeOther ) ;
7079 }
7180
7281 public class RedirectUsingStatusCode : ActionResult
You can’t perform that action at this time.
0 commit comments