powershell curl和WebRequest都遵循重定向

blu*_*isk 5 powershell curl webrequest

我试图弄清楚我的网页返回的状态代码,根据Linux子系统的卷曲,肯定是301(永久移动),但是在PowerShell上使用curl或WebRequest对象,它返回200(OK).

为什么是这样?

Mik*_*ray 14

这是因为默认情况下.NET和PowerShell遵循重定向,但curl不会这样做.默认值为HttpWebRequest.AllowAutoRedirecttrue,Invoke-WebRequest的MaximumRedirection默认值为5.

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

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

或Invoke-WebRequest cmdlet:

Invoke-WebRequest -Uri "http://google.com" -MaximumRedirection 0
Run Code Online (Sandbox Code Playgroud)

或者,使用-L标志来跟踪curl中的重定向:

curl -L google.com
Run Code Online (Sandbox Code Playgroud)

  • PowerShell使用`-MaximumRedirection 0`的curl别名会导致错误.添加`-ErrorAction Ignore`以实际查看响应. (2认同)