Invoke-RestMethod遇到了一个非常奇怪的问题。我使用它发送GET并在请求中包含一个cookie:
$getEndpoint = "http://YYYYYYYYYYYYYY/clients/XXXXXX/dev"
$authheader = "auth_tkt=\""XXX"""
Invoke-RestMethod -Headers @{"cookie" = "$authheader"} -Uri $getEndpoint
如果我查看Fiddler中的请求,我会看到:
获取http://YYYYYYYYYYYYYY/clients/XXXXXX/dev HTTP / 1.1用户代理: Mozilla / 5.0(Windows NT; Windows NT 6.1; en-GB)WindowsPowerShell / 4.0 主持人:YYYYYYYYYYYYYYY连接:Keep-Alive
哪里的cookie消失了?沿着管道的某个地方,cookie正在消失。有什么想法吗?我假设我在某处误解了某些事情。
如果它很重要,我尝试了curl的类似请求,它没有问题(即它使用提供的cookie进行身份验证,我得到了我期待的响应):
curl -H" cookie:auth_tkt = \" XXX" http://YYYYYYYYYYYYYY/clients/XXXXX/dev
答案 0 :(得分:3)
The invoke-restmethod's doc表示您无法通过-headers
传递Cookie:
标头指定Web请求的标头。输入哈希表或字典。要设置UserAgent标头,请使用UserAgent参数。您不能使用此参数指定UserAgent或cookie标头
另一种方法是使用webclient和cookieContainer;看看那篇文章: powershell httpwebrequest GET method cookiecontainer problem?