我现在正在使用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过滤,我想提供更多信息,但它是敏感信息
解决方法:
似乎您正在以正确的方式发出请求,并传递了CookieJarInterface的实例.但是,您不应该期望Set-Cookie标头.相反,请检查您的罐子以检查返回了哪些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类07000.此外,您可以查看ArrayIterator类的docs.