Windowsサーバの監視URLにスクリプトを書き込もうとしています。以下はスクリプトです。私は3つのURLを使って回答を見ました。 HTTPはHTTPSにリダイレクトされようとしているために失敗する必要がありますが、私は応答として200を得た - 期待される結果はURL監視の要求は失敗しますが、応答しません。
http://google.com
です。https://google.com
- 成功していて、成功したはずです。https://yahoo.com
- プロキシがYahooをブロックするため、失敗するはずです。
しかし面白いことに、私は3つのURLすべてで成功を収めています。 https://google.com
はいくらか受け入れ可能ですが、Yahooの場合は、サイトがブロックされているため、プロキシサーバーがエラーページを投げていますが、以下のコードはプロキシエラーページを成功として受け取り、エラーとして表示します。
PowerShellのHTTPレスポンスコードを取得するための信頼できる方法である私に助言してください。
$sites = @(
"http://www.google.com",
"https://www.google.com",
"https://www.yahoo.com"
)
foreach ($url in $sites) {
$HTTP_Request = [System.Net.WebRequest]::Create("$url")
$HTTP_Response = $HTTP_Request.GetResponse()
$HTTP_Status = [int]$HTTP_Response.StatusCode
if ($HTTP_Status -eq 200) {
Write-Host "$url" " is OK!"
} else {
Write-Host "$url" " may be down, please check!"
}
$HTTP_Response.Close()
}
あなたは '$をfalseに' $ HTTP_Request.AllowAutoRedirect'を設定していないので、最初の1が成功しました' –
あなたのプロキシがエラー応答コードなしでエラーページを返す場合(誰かがそれを間違えて間違えるようなことを驚かせることは決してありません)、正しく動作するようにプロキシを再設定する必要があります。それ以外の場合は、返される実際の(HTML)ページを解釈する必要があります。 –
@Ansgarは何を言っていますか? 「200 OK - あなたはそのページを表示していないかもしれません」と返すプロキシサーバーが誤って構成されている(または自己ビルドされている)可能性があります。 – CodeCaster