使用来自Post请求中的Cookie与Get请求一起使用Powershell
问题描述:
我面临的问题是从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
答
您创建了一个新的名为$NextCookie
的cookie,但您对此无能为力。我认为您想在$Nextsession.cookies.add()
声明中添加$NextCookie
,而不是$cookie
。
所以我相信你的代码行37应$Nextsession.cookies.add($Nextcookie)
不$Nextsession.cookies.add($cookie)