Прокси-запрос "multipart" приводит к пустому телу - PullRequest
0 голосов
/ 10 февраля 2020

Наша команда недавно перешла на Laminas и при этом столкнулась с проблемой того, как наше приложение обрабатывает загрузку файлов. У нас есть 2 приложения (оба MVC): одно приложение просмотра и одно приложение API. Наше приложение View обрабатывает все запросы от браузера и прокси-запросов API через наш ApiProxyController. Это работает для каждого из наших запросов, за исключением загрузки файлов. Для этих запросов (multipart/form-data;) мы видели, что к моменту поступления запроса в наше приложение API тело запроса пусто.

Мы столкнулись с этой проблемой при использовании обеих последних версий HTTP-клиента Guzzle и клиента Laminas. Вот фрагмент кода, который мы используем для передачи запроса от нашего приложения представления:

/* @var $request \Laminas\Http\PhpEnvironment\Request */
$request = $this->getRequest();
// URI object used to build PSR-7 request; update URI for proper forwarding

$uri = $request->getUri();
$uri->setHost($this->apiHost);

$psr7Request = Psr7ServerRequest::fromLaminas($request)
    ->withoutHeader('Host')
    ->withHeader('Authorization', sprintf('Bearer %s', $identity->getAccessToken()->getToken()));

$guzzle = new \GuzzleHttp\Client([
    // Turn off SSL certificate verification
    'verify' => false,
    // Prevent exceptions from being thrown due to HTTP status codes (e.g. 4xx, 5xx)
    'exceptions' => false,
]);

$psr7Response = $guzzle->send($psr7Request);
$response = Psr7Response::toLaminas($psr7Response);
...