Facebood SDK возвращает HTTP / 2 в заголовке - PullRequest
0 голосов
/ 17 декабря 2018

Я использую 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.Если это какая-то проблема с сервером, то как ее исправить?

1 Ответ

0 голосов
/ 17 декабря 2018

Обновить 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...