Почему Cloudfront возвращает 403 с помощью Guzzle?

Я использую API, использующий службу CloudFront,

И я получаю ошибку 403 для запросов с Guzzle, но если использует, например, PHP Curl или вызов через Postman или браузер, работает.

Вот журнал жратвы: Журнал жратвы

А вот часть кода:

/**
 * @return void
 */
public function __construct()
{
    $this->client = new Client([
        'base_uri' => env('API_HOST'),
        'headers'  => [
            'Accept' => 'application/json',
            'Content-Type' => 'application/json',
        ],
        'timeout' => 30,
        'debug' => true,
    ]);
}

/**
 * @param string $method
 * @param string $url
 * @param array $body
 * @param bool $isMultipart
 *
 * @return ResponseInterface
 */
private function request(string $method, string $url, array $body = [], bool $isMultipart = false): ResponseInterface
{
    if ($isMultipart) {
        $params['multipart'] = [$body];
    } else {
        $params['json'] = $body;
    }

    $url = $this->appedAuthTokensToUrl($url);

    return $this->client->request($method, $url, $params);
}

person Allan Santos    schedule 21.12.2020    source источник
comment
Привет, не могли бы вы опубликовать код / ​​журналы в виде текста, используя блоки кода? Подробнее см. здесь stackoverflow.com/help/minimal-reproducible-example.   -  person Joshua    schedule 22.12.2020
comment
Итак, я добавил код в виде текста, но stackoverflow не позволяет мне публиковать много кода.   -  person Allan Santos    schedule 22.12.2020
comment
возможно, попробуйте обрезать его до соответствующей части или, по крайней мере, в pastebin или в чем-то, что легко найти, а не изображение.   -  person Joshua    schedule 22.12.2020


Ответы (1)


Наконец нашел решение. Если в запросе GET есть тело, Cloudfront вернет 403.

Итак, в моем случае проблема заключается в следующем, если (всегда устанавливая тело):

       if ($isMultipart) {
            $params['multipart'] = [$body];
        } else {
            $params['json'] = $body;
        }

Здесь ссылка на документы Cloudfront

person Allan Santos    schedule 22.12.2020