『Real World HTTP』を読んでいて、curl コマンドでヘッダ送信する際にエラーになったため対処を記載する。
実行環境
- OS: Windows 10 Pro
- PowerShell: 7.4.0
- curl: 8.4.0
- VSCode: 1.85.0
対処前(エラー)
実行コマンド
curl --http1.0 -H "X-Test: Hello" http://localhost:18888
実行結果
Invoke-WebRequest : パラメーター 'Headers' をバインドできません。"X-Test: Hello" の値を "System.String" 型から "System.Collections.IDictionary" 型に変換 できません。 発生場所 行:1 文字:19 + curl --http1.0 -H "X-Test: Hello" http://localhost:18888 + ~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest]、ParameterBindingException + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
対処
エイリアスの設定を削除する。
デフォルトのエイリアス設定
CommandType Name Version Source ----------- ---- ------- ------ Alias curl -> Invoke-WebRequest
エイリアス削除コマンド
設定の解除は、その PowerShell コンソールのセッションでのみ有効。
del alias:curl
エイリアス削除コマンド実行後、エイリアス設定は以下の通り解除されている状態となる。
PS C:\Users\fossi\01_research\01_programming\go> Get-Alias curl Get-Alias : name 'curl' を含むエイリアスは存在しないため、このコマンドは一致するエイリアスを見つけられません。 発生場所 行:1 文字:1 + Get-Alias curl + ~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (curl:String) [Get-Alias], ItemNotFoundException + FullyQualifiedErrorId : ItemNotFoundException,Microsoft.PowerShell.Commands.GetAliasCommand
対処後(正常)
実行コマンド
curl --http1.0 -H "X-Test: Hello" http://localhost:18888
実行結果
curl コマンドが正常に実行され、期待通りの結果が得られた。
GET / HTTP/1.0 Host: localhost:18888 Accept: */* User-Agent: curl/8.4.0 X-Test: Hello
補足
他の対処として、エイリアス削除コマンドを実行せず、curl.exe
とつけて実行する方法もあるらしい。
curl.exe --http1.0 -H "X-Test: Hello" http://localhost:18888