spatie/guzzle-redirect-history-middleware

用于跟踪重定向的 Guzzle 中间件

1.0.1 2021-10-15 15:16 UTC

This package is auto-updated.

Last update: 2024-08-25 15:31:13 UTC


README

用于跟踪重定向的 Guzzle 中间件

Latest Version on Packagist Tests GitHub Code Style Action Status Total Downloads

本包包含用于 Guzzle 的中间件,允许您跟踪请求期间发生的重定向。

支持我们

我们投入大量资源创建 最佳开源包。您可以通过 购买我们的付费产品之一 来支持我们。

我们非常感谢您从家乡寄来明信片,提及您正在使用我们哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将所有收到的明信片发布在 我们的虚拟明信片墙上

安装

您可以通过 composer 安装此包

composer require spatie/guzzle-redirect-history-middleware

使用方法

以下是如何使用 Spatie\GuzzleRedirectHistoryMiddleware\RedirectHistoryMiddleware 将重定向历史存储在 Spatie\GuzzleRedirectHistoryMiddleware\RedirectHistory 实例中的快速示例。

use Spatie\GuzzleRedirectHistoryMiddleware\RedirectHistory;
use Spatie\GuzzleRedirectHistoryMiddleware\RedirectHistoryMiddleware;

/*
 * First create a new instance of `RedirectHistory`
 * This instance can be used after the requests to get the redirects.
 */
$redirectHistory = new RedirectHistory();

/*
 * This is the default way to add a middleware to Guzzle
 * default middleware stack.
 */
$stack = HandlerStack::create();
$stack->push(RedirectHistoryMiddleware::make($redirectHistory));

/*
 * Let's create Guzzle client that uses the middleware stack
 * containing our `RedirectHistoryMiddleware`.
 */
$client = new Client([
    'handler' => $stack,
]);

/*
 * Now, let's make a request.
 */
$response = $client->get($anyUrl);

/*
 * And tada, here are all the redirects performed
 * during the request.
 */
$redirects = $redirectHistory->toArray();

$redirects 是一个数组,其元素是一个包含以下键的数组

  • status: 响应的状态码
  • url: 导致重定向的请求的 URL

所以如果您请求 https://example.com/page-a,该请求重定向到 /page-b,最终重定向到 /page-c,这将 $redirects 的内容

[
    ['status' => 302, 'url' => 'https://example.com/page-a'],
    ['status' => 302, 'url' => 'https://example.com/page-b'],
    ['status' => 200, 'url' => 'https://example.com/page-c'],
];

即使您的初始请求导致 \GuzzleHttp\Exception\TooManyRedirectsExceptionRedirectHistory 仍然包含执行的重定向

我们创建此包的原因

Guzzle 有 内置的重定向跟踪支持。不幸的是,它并不是那么适合开发者使用。您必须操作和组合在 X-Guzzle-Redirect-HistoryX-Guzzle-Redirect-Status-History 标头中找到的数组。

此外,当遇到异常,如 TooManyRedirectsException 时,这些标头不会被填充。

我们的包使检索重定向变得容易。即使请求最终失败,您也能够获取重定向历史。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可协议

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件