You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
InvokeWeb-Request -WebSession -AllowInsecureRedirect -MaximumRedirection together wrong number of redirections #19183
I think the behaviour when we handle the redirects* and use -MaximumRedirection and -WebSession is incorrect.
Each time we handle a redirection the WebSession.MaximumRedirection parameter is reduced by one.
In the example below it goes from 3 to 0.
When we use the web session I would expect the -MaximumRedirection to be 3 in each follow up request, instead WebSession.MaximumRedirection is 0 and stays 0
Test:
Invoke-WebRequest"http://mockbin.org/redirect/300?to=https://mockbin.org/redirect/301?to=http://mockbin.org/redirect/302?to=https://mockbin.org/redirect/303?to=http://mockbin.org/redirect/308?to=https://mockbin.org/status/200"-MaximumRedirection 3-SessionVariable session -AllowInsecureRedirect
[int]($error[0].Exception.statuscode) #--> 303$session.MaximumRedirection#--> 0 (i think it should be 3)Invoke-WebRequest"http://mockbin.org/redirect/300?to=https://mockbin.org/redirect/301?to=http://mockbin.org/redirect/302?to=https://mockbin.org/redirect/303?to=http://mockbin.org/redirect/308?to=https://mockbin.org/status/200"-WebSession $session-AllowInsecureRedirect
# I expect -MaximumRedirection == 3
[int]($error[0].Exception.statuscode) #--> 300$session.MaximumRedirection#--> 0
If this issue is confirmed, I will fix it in my next PR
We currently handle the redirects in 3 cases -AllowInsecureRedirect (https to http redirect); -PreserveAuthorizationOnRedirect; -PreserveHttpMethodOnRedirect in the other cases HttpClient handles the redirects
Expected behavior
After setting -MaximumRedirection 3 it should remain 3 in the following requests
Actual behavior
It changes
Error details
No response
Environment data
Latest Build
(every build since https://github.com/PowerShell/PowerShell/commit/ca4b6162f49aff1b89fa624a2e059794c740b6cb)
changed the title [-]InvokeWeb-Request -WebSession -AllowInsecureRedirect -MaximumRedirection together variable number of redirections[/-][+]InvokeWeb-Request -WebSession -AllowInsecureRedirect -MaximumRedirection together wrong number of redirections[/+]on Feb 20, 2023
Activity
[-]InvokeWeb-Request -WebSession -AllowInsecureRedirect -MaximumRedirection together variable number of redirections[/-][+]InvokeWeb-Request -WebSession -AllowInsecureRedirect -MaximumRedirection together wrong number of redirections[/+]iSazonov commentedon Feb 21, 2023
I'd check other WebSession properties too.
CarloToso commentedon Feb 22, 2023
WebSession.MaximumRedirection is the only WebSession property that changes after being set.
PowerShell/src/Microsoft.PowerShell.Commands.Utility/commands/utility/WebCmdlet/Common/WebRequestPSCmdlet.Common.cs
Lines 1241 to 1245 in 0be3eea