Invoke-RestMethod不会传递标题

时间:2015-03-05 08:45:37

标签: powershell cookies fiddler

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

1 个答案:

答案 0 :(得分:3)

The invoke-restmethod's doc表示您无法通过-headers传递Cookie:

  

标头指定Web请求的标头。输入哈希表或字典。要设置UserAgent标头,请使用UserAgent参数。您不能使用此参数指定UserAgent或cookie标头

另一种方法是使用webclient和cookieContainer;看看那篇文章: powershell httpwebrequest GET method cookiecontainer problem?