URL холста Facebook перенаправлен на https - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть приложение для Facebook с URL-адресом холста и защищенным URL-адресом холста.

Когда мой пользователь открывает приложение на вкладке страницы, мое приложение читает signed_request с page id и доставляет содержимое для этой конкретной страницы FB.

Когда мой пользователь использует https серфинг в FB выходит из системы, а следующий пользователь входит в систему только с http серфингом, мое приложение перенаправляется на защищенный URL-адрес холста, и мой параметр signed_request теряется .Без параметра signed_request я не могу определить, какая страница должна обслуживаться моим приложением.

Когда я очищаю кэш браузера , используется правильный http URL моего приложения.

Есть ли способ всегда использовать https с приложениями FB или запретить браузеру кэшировать URL https?

Спасибо!

1 Ответ

0 голосов
/ 15 мая 2012

Если вы хотите перенаправить с http на https и не потерять параметр POST Sign_request, вы можете вручную поймать его перед перенаправлением и добавить к URL-адресу в качестве параметра GET. Смотри ниже!

// Force SSL
if(443 != $_SERVER['SERVER_PORT'] || 'on' != $_SERVER['HTTPS'])
{
    $queryString = $_SERVER['QUERY_STRING'];
    $hadQueryString = '' == $queryString ? false : true;
    $baseUrl = $_SERVER['REQUEST_URI'];
    $questionMark = strpos($_SERVER['REQUEST_URI'], '?');

    if(false !== $questionMark)
    {
        $baseUrl = substr($_SERVER['REQUEST_URI'], 0, $questionMark);
    }

    if($hadQueryString && isset($_REQUEST['signed_request']))
    {
        $queryString = $_SERVER['QUERY_STRING'] . '&signed_request=' . $_REQUEST['signed_request'];
    }
    elseif(isset($_REQUEST['signed_request']))
    {
        $queryString = 'signed_request=' . $_REQUEST['signed_request'];
    }

    $newLocation = 'https://' . $_SERVER['HTTP_HOST'] . $baseUrl . '?' . $queryString;

    header('HTTP/1.1 301 Moved Permanently');
    header('Location: ' . $newLocation);
    exit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...