powershell - 检查重定向 URL 后如何在 PS 中获取 200 状态码
问题描述
我正在尝试为 URL 获取 200 状态代码,但我一直得到 0。该网址有效,但问题是它是一个重定向的网址。即使我在重定向后尝试最终 URL,它仍然会显示 0 状态代码。
无论是否被重定向,我如何才能为关闭或启动的网站获取正确的状态代码?
这就是我现在所拥有的,它适用于像http://google.com这样的常规 URL ,但不适用于重定向的 URL。不幸的是,我正在使用的 url 是私有的,但它的格式是http://example.com,最后是https://example.com/index?redirectUrl=
如果我使用以下命令运行 PS 脚本: .\CheckUrl.ps1 https://example.com/index?redirectUrl=
...它仍然无法返回 200 的代码。无论我使用第一个 url 还是最终重定向的 url,页面都可以正常显示,但状态代码返回 0,这意味着它表示站点已关闭,这不是真的。
$url = $args[0]
function Get-WebStatus($url) {
try {
[Net.HttpWebRequest] $req = [Net.WebRequest]::Create($url)
$req.Method = "HEAD"
[Net.HttpWebResponse] $res = $req.GetResponse()
if ($res.StatusCode -eq "200") {
Write-Host "`nThe site $url is UP (Return code: $($res.StatusCode) - $([int] $res.StatusCode))`n"
} else {
Write-Host "`nThe site $url is DOWN (Return code: $($res.StatusCode) - $([int] $res.StatusCode))`n"
}
} catch {
Write-Host "`nThe site $url is DOWN (Return code: $($res.StatusCode) - $([int] $res.StatusCode))`n" -ForegroundColor Red -BackgroundColor Black
}
}
Get-WebStatus $url
解决方案
评论太长了。重要提示:在这种情况下$res = $req.GetResponse()
不给变量设置任何值( 变量保持不变)。$res
catch
$res
#url1 = $args[0]
function Get-WebStatus($url) {
try {
$req = [System.Net.HttpWebRequest]::Create($url)
$req.Method = "HEAD"
$req.Timeout = 30000
$req.KeepAlive = $false
$res = $req.GetResponse()
if ($res.StatusCode.value__ -eq 200) {
Write-Host ("`nThe site $url is UP (Return code: " +
"$($res.StatusCode) - " +
"$($res.StatusCode.value__))`n") -ForegroundColor Cyan
} else {
Write-Host ("`nThe site $url is DOWN (Return code: " +
"$($res.StatusCode) - " +
"$($res.StatusCode.value__))`n") -ForegroundColor Yellow
}
} catch {
$res = $null ### or ### [System.Net.HttpWebRequest]::new()
Write-Host ("`nThe site $url is DOWN " +
"($($error[0].Exception.InnerException.Message))`n") -Foreground Red
}
$res ### return a value
}
#Get-WebStatus $url1
输出示例:
Get-WebStatus 'https://google.com/index?redirectUrl='
Get-WebStatus 'https://google.com/'
Get-WebStatus 'https://example.com/index?redirectUrl='
The site https://google.com/index?redirectUrl= is DOWN (The remote server returned an error: (404) Not Found.) The site https://google.com/ is UP (Return code: OK - 200) The site https://example.com/index?redirectUrl= is DOWN (The operation has timed out)
推荐阅读
- botframework - 在 ms 团队机器人响应中配置事实集项目的宽度
- javascript - html 修改名称的值,使其可以多次使用
- python - 如何将本地 GitHub 分支转换为 Visual Studio Python 项目?
- java - 如何使用 Jython 库 wrt Java 代码连接到 oracle 数据库
- javascript - 如何克服赛普拉斯的悬停问题?
- python - 在 python kivy 应用程序中从照片库中获取全部或一定数量的图像
- linux - 高效编辑大文件
- javascript - 如何引用从api返回的json中的字段?
- json - 将包含 JSON 文件的 GitHub Actions 工件发布到 New Relic
- forms - BS 3.3.6 将表单组对齐到列的底部