Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

powershell curl and WebRequest both follow redirects

I was trying to figure out the status code returned by my webpage, which most certainly is 301 (moved permanently), according to curl on the Linux subsystem, but using curl or the WebRequest object on powershell, it returns 200 (OK).

Why is this?

like image 280
bluppfisk Avatar asked Dec 15 '16 04:12

bluppfisk


1 Answers

It is because .NET and PowerShell are following redirects by default but curl does not do this. The default value of HttpWebRequest.AllowAutoRedirect is true and Invoke-WebRequest's MaximumRedirection default value is 5.

To turn off automatic redirection via WebRequest:

$request = [System.Net.WebRequest]::Create("http://google.com")
$request.AllowAutoRedirect = $false
$request.GetResponse()

or Invoke-WebRequest cmdlet:

Invoke-WebRequest -Uri "http://google.com" -MaximumRedirection 0

Alternatively, use the -L flag to follow redirects in curl:

curl -L google.com
like image 148
Mike Zboray Avatar answered Sep 16 '22 22:09

Mike Zboray