2017-10-06 88 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)