2017-10-06 125 views
1

我面临的问题是从POST请求获取Cookie,以便在以下GET请求中使用验证。使用来自Post请求中的Cookie与Get请求一起使用Powershell

问题是,尽管将cookie复制到下一个GET请求进行身份验证,但我仍然收到身份验证错误。我不确定我做错了什么。

$url = "www.example.com/post" 
$postParams = @{user_id='username';user_password='password'} 

$webrequest = Invoke-WebRequest -Uri $url -SessionVariable websession -Method Post -Body $postParams 
$cookies = $websession.Cookies.GetCookies($url) 

# Here, you can output all of $cookies, or you can go through them one by one. 

$Nextsession=new-object microsoft.powershell.commands.webrequestsession 

foreach ($cookie in $cookies) { 
# You can get cookie specifics, or just use $cookie 
# This gets each cookie's name and value 
Write-Host "$($cookie.name) = $($cookie.value)" 


$Nextcookie=new-object system.net.cookie 
$Nextcookie.name = $cookie.Name 
$Nextcookie.path = $cookie.Path 
$Nextcookie.value = $cookie.Value 
$Nextcookie.domain = $cookie.Domain 
$Nextcookie.expires = $cookie.Expires 


$Nextcookie.comment = $cookie.Comment 
$Nextcookie.commentUri = $cookie.CommentUri 
$Nextcookie.discard = $cookie.Discard 
$Nextcookie.expired = $cookie.Expired 

$Nextcookie.httpOnly = $cookie.HttpOnly 
$Nextcookie.port = $cookie.Port 
$Nextcookie.secure = $cookie.Secure 
$Nextcookie.timeStamp = Get-Date 
$Nextcookie.version = $cookie.Verison 


$Nextsession.cookies.add($cookie) 

} 


$url = "www.example.com/get" 
$Response = Invoke-RestMethod -Uri $url -Method Get -websession $Nextsession 
Return $Response 

回答

0

您创建了一个新的名为$NextCookie的cookie,但您对此无能为力。我认为您想在$Nextsession.cookies.add()声明中添加$NextCookie,而不是$cookie

所以我相信你的代码行37应$Nextsession.cookies.add($Nextcookie)$Nextsession.cookies.add($cookie)