Guzzle6
有一个很好的选择:allow_redirects
。如果将此选项设置为false
值,则如果302
或Headers
等响应代码具有Location
参数,则Guzzle阻止重定向。
但有一个问题。如果重定向由客户端发送 - Guzzle没有注意到这一点。例如:
我们有一些网址http://example.com/
已重定向到网页http://redirected.com/
。发送请求帮助Guzzle:
$oClient->request('POST', 'http://redirected.com/', [
'form_params' => $aFormData,
'cookies' => (new CookieJar($aPrepareCookie)),
'debug' => true,
'allow_redirects' => false
]);
假设redirect.com
有index.php
这样:
<?php
header('Location: http://www.example.com/');
?>
在这种情况下,重定向将被Guzzle阻止。
现在,让我们看一下这个重定向示例:
<?php
echo '<script>window.location = "http://www.example.com/";</script>';
?>
我们遇到了问题,因为这是客户端重定向,他不会影响Headers
,因此Guzzle
无法跟踪HTTP状态代码或位置值。
那么,我如何解决这个问题并找到解决方案?
感谢您的帮助!
答案 0 :(得分:1)
正如之前的海报所说,Guzzle不会执行javascript。
使用Guzzle Middleware可以轻松解决您的问题。
在中间件中: