Facebood SDK возвращает HTTP / 2 в заголовке

Я использую Facebook SDK для аутентификации пользователя и получения списка страниц facebook. SDK хорошо работает на моем сервере разработки, но вылетает на рабочем сервере. При отладке я обнаружил, что ответ заголовка отличается на dev и производственном сервере.

Ответ заголовка, приходящий на сервер dev, — это HTTP / 1.1, а на рабочем сервере это HTTP / 2, который нарушает регулярное выражение и SDK.

В SDK есть файл с именем

/vendor/facebook/graph-sdk/src/Facebook/Http/GraphRawResponse.php

и функция:

public function setHttpResponseCodeFromHeader($rawResponseHeader)
{
preg_match('|HTTP/\d\.\d\s+(\d+)\s+.*|', $rawResponseHeader, $match);

$this->httpResponseCode = (int)$match[1];
}

и в соответствии с регулярным выражением должно быть десятичное число с десятичной точкой, но на производстве это только 2, который разбивает его.

Мой вопрос: связано ли это с конфигурацией моего сервера на производстве или Facebook отправляет эти заголовки. Если facebook отправляет заголовки, то почему он ведет себя по-другому, так как у меня та же версия SDK.
Если это какая-то проблема с сервером, то как ее исправить?

0

Решение

Обновите SDK до текущей версии — код этого метода был изменен, предположительно для учета HTTP / 2.

https://github.com/facebook/php-graph-sdk/blob/23928048b39e649abecd658f01a25bc833327b57/src/Facebook/Http/GraphRawResponse.php#L105

public function setHttpResponseCodeFromHeader($rawResponseHeader)
{
// https://tools.ietf.org/html/rfc7230#section-3.1.2
list($version, $status, $reason) = array_pad(explode(' ', $rawResponseHeader, 3), 3, null);
$this->httpResponseCode = (int) $status;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector