はあなたを助けにはなりません - SSL/TLSは言及されていないプロトコルです - プロトコル違反がHTTPに関してですヘッダ(例えば、、 TLSが確立された後)。
このような違反を無視するかどうかを制御する.NET configuration flag called useUnsafeHeaderParsing
があります。
リフレクションを使用すると、ランタイムから設定することもできます。
function Set-UseUnsafeHeaderParsing
{
param(
[Parameter(Mandatory,ParameterSetName='Enable')]
[switch]$Enable,
[Parameter(Mandatory,ParameterSetName='Disable')]
[switch]$Disable
)
$ShouldEnable = $PSCmdlet.ParameterSetName -eq 'Enable'
$netAssembly = [Reflection.Assembly]::GetAssembly([System.Net.Configuration.SettingsSection])
if($netAssembly)
{
$bindingFlags = [Reflection.BindingFlags] 'Static,GetProperty,NonPublic'
$settingsType = $netAssembly.GetType('System.Net.Configuration.SettingsSectionInternal')
$instance = $settingsType.InvokeMember('Section', $bindingFlags, $null, $null, @())
if($instance)
{
$bindingFlags = 'NonPublic','Instance'
$useUnsafeHeaderParsingField = $settingsType.GetField('useUnsafeHeaderParsing', $bindingFlags)
if($useUnsafeHeaderParsingField)
{
$useUnsafeHeaderParsingField.SetValue($instance, $ShouldEnable)
}
}
}
}
をそして同様に使用します:This Technet forum answerギブはPowerShellでこれを行う方法の良い例ですが、私たちは以下のように気の利いた機能であることをラップすることができますので、Invoke-WebRequest
を呼び出す前に
2つのクライアントを試しました:[wget](https://www.gnu.org/software/wget/)(Powershell製)と[Microsoft BITS](https://msdn.microsoft.com/en-us/)ライブラリ/ aa362708%28v = vs.85%29.aspx)。いずれの場合も、サーバーから「プロトコルエラー」が発生します。 Hmmm .... Q:コマンドラインや.batファイルからwgetを実行するとどうなりますか? Q:* ANY *クライアントからサーバーと正常に通信できますか? Q:サーバーは何をやっているのですか?失敗したレスポンスとはまさに* IS *なので、どのように実装されていますか? – paulsm4
@ paulsm4 wgetは 'Invoke-WebRequest'にエイリアスされます –
これは正しいことですが、両方で同様の問題があります。 WiFi対応カメラから写真をダウンロードしようとしています。組み込みサーバーへの接続は問題ありません。私はLinuxでwgetを使ってこれと同じことをするとうまくいく。しかし、BITSを使うことを好むでしょう。 – clem