javascript - 完全禁用 Guzzle 的重定向

标签 javascript php redirect guzzle guzzle6

Guzzle6 有一个漂亮的选项:allow_redirects。如果将此选项设置为 false 值,如果 302Headers 等响应代码具有 Location 参数,Guzzle 会阻止重定向。

但是有一个问题。如果重定向由客户端发送 – Guzzle 不会注意到这一点。例如:

我们有一些重定向到页面 http://redirected.com/ 的 URL http://example.com/。在 Guzzle 帮助下发送请求:

$oClient->request('POST', 'http://redirected.com/', [
    'form_params' => $aFormData,
    'cookies' => (new CookieJar($aPrepareCookie)),
    'debug' => true,
    'allow_redirects' => false
]);

假设redirect.comindex.php,如下所示:

<?php
    header('Location: http://www.example.com/');
?>

在这种情况下,Guzzle 将阻止重定向。

现在,让我们看看这个重定向示例:

<?php
    echo '<script>window.location = "http://www.example.com/";</script>';
?>

这里我们遇到了一个问题,因为这是客户端重定向,他不能影响 Headers,因此 Guzzle 无法跟踪 HTTP 状态代码或位置值。

那么,我该如何解决这个问题并找到解决方案?

感谢您的帮助!

最佳答案

正如之前的发帖者所说,Guzzle 不会执行 javascript。

使用 Guzzle Middleware 可以轻松解决您的问题.

在中间件内:

  • 收到回复
  • 解析 window.location="someurl"的正文
  • 执行“someurl”请求
  • 修改“someurl”响应的 header 以包含它是重定向的事实。
  • 返回响应。

关于javascript - 完全禁用 Guzzle 的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33889405/

相关文章:

php - 使用来自 JavaScript 数据库的 php 变量?

php - Laravel Eloquent 区分大小写

php - web api中php中的异步函数

http - iptables 将 80 重定向到 8080 但阻止公共(public) 8080 访问

javascript - 在 cloudflare 工作人员中从一个域重定向到另一个域不起作用

php - 如果未登录,则重定向到首页 WordPress

javascript - jQuery - 隐藏前等待 2 秒

javascript - 编写一个为特定事件设置全局变量的 jQuery 函数的好方法吗?

Javascript AES 加密返回太多字符

php - 向 PHP 中的每个数组键添加一个字符