powershell curl 和 WebRequest 都遵循重定向

powershell curl and WebRequest both follow redirects

我试图找出我的网页返回的状态代码,根据 Linux 子系统上的 curl,这肯定是 301(永久移动),但使用 curl 或 powershell 上的 WebRequest 对象, 它 returns 200 (OK).

这是为什么?

这是因为 .NET 和 PowerShell 默认遵循重定向,但 curl 不这样做。 HttpWebRequest.AllowAutoRedirect默认值为true,Invoke-WebRequest的MaximumRedirection默认值为5.

要通过 WebRequest 关闭自动重定向:

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

或调用 WebRequest cmdlet:

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

或者,使用 -L 标志在 curl 中跟随重定向:

curl -L google.com