我现在正在使用GuzzleHttp发出HTTP请求,首先我向login.asp发出POST请求,该请求返回带有Set-Cookie的响应,其中包含我将来需要的值
当我检查我获得的答案时,我得到以下
如上所述,我获得了除Set-Cookie之外的所有密钥,可能会发生什么?我怎样才能获得这个价值?我使用"guzzlehttp/guzzle": "^6.3",
或者我可以使用其他工具获取它吗?
$jar = new CookieJar;
$client = new Client([
'base_uri' =>'miurl/',
'timeout' => 10.0,
'cookies' => $jar
]);
$response = $client->request('POST', 'login.asp', [
'form_params' => [
'pws' => '',//data password
'user' => '',//data user
]
]);
//Request require coookies
$response = $client->request('POST', 'goform/Wls', [
'form_params' => [
/*Form´Params*/
],
//if I manually add a correct userid the post application works fine
'headers' => [
//Require cookie param userid
'Cookie' => 'LANG_COOKIE=lang_span; userid=1524324306',
]
]);
Alternatively, I used this configuration without being able to obtain the cookie yet
使用邮递员检查一下答案,是在正确登录后仍然在同一页面上但是使用javascript重定向,这会影响吗?
<script language='JavaScript'>window.location='/admin/cable-Systeminfo.asp';</script>
</html>
我直接为路由器hitron技术cgnv22管理mac过滤的请求,我想提供更多信息,但它是敏感信息
答案 0 :(得分:4)
您似乎正在以正确的方式提出请求,并传递CookieJarInterface
的实例。但是,您不应该期望Set-Cookie
标头。相反,请检查 jar 以检查返回的Cookie。
以下示例显示了如何迭代所有Cookie:
$client = new \GuzzleHttp\Client();
$jar = new \GuzzleHttp\Cookie\CookieJar();
$request = $client->request('GET', 'https://www.google.com/', [
'cookies' => $jar
]);
$it = $jar->getIterator();
while ($it->valid()) {
var_dump($it->current());
$it->next();
}
以下是上述代码段的示例输出:
object(GuzzleHttp\Cookie\SetCookie)#36 (1) {
["data":"GuzzleHttp\Cookie\SetCookie":private]=>
array(9) {
["Name"]=>
string(3) "NID"
["Value"]=>
string(132) "130=dmyl6v*******"
["Domain"]=>
string(11) ".google.com"
["Path"]=>
string(1) "/"
["Max-Age"]=>
NULL
["Expires"]=>
int(1542242169)
["Secure"]=>
bool(false)
["Discard"]=>
bool(false)
["HttpOnly"]=>
bool(true)
}
}
有关如何访问返回的Cookie的详细信息,请参阅CookieJar
类source。此外,您还可以查看ArrayIterator
类的docs。