Я использую Powershell 5. Я заметил странное поведение в Invoke-WebRequest, выполняемое методом GET для html-страниц и файлов. Примером может быть следующий код:
$test1 = Invoke-WebRequest -Uri 'https://stackoverflow.com/' -Method Get
Write-Host "RawContentLength: $($test1.RawContentLength) bytes, ContentLength: $($test1.Content.Length) bytes"
Это дает мне «RawContentLength: 250286 байт, ContentLength: 250250 байт». Я думал, что разница была в том, что RawContent содержит заголовки и тело ответа, в то время как Content содержит только тело. Но затем я попробовал тот же код для файла:
$test2 = Invoke-WebRequest -Uri 'https://www.google.com/logos/doodles/2018/hannah-glasses-310th-birthday-5894265455509504-2x.jpg' -Method Get
Write-Host "RawContentLength: $($test2.RawContentLength) bytes, ContentLength: $($test2.Content.Length) bytes"
И он выдал «RawContentLength: 405686 байт, ContentLength: 405686 байт»!
Почему RawContentLength и Content.Length одинаковы для файла, но различны для веб-страницы?