Facebook画布url已重定向到https
我有一个Facebook应用程序,它同时具有画布url和安全画布url 当我的用户在页面选项卡中打开应用程序时,我的应用程序将读取带有页面id的Facebook画布url已重定向到https,facebook,canvas,https,Facebook,Canvas,Https,我有一个Facebook应用程序,它同时具有画布url和安全画布url 当我的用户在页面选项卡中打开应用程序时,我的应用程序将读取带有页面id的签名请求,并提供此特定FB页面的内容 当我的用户在FB中使用https冲浪注销,而下一个用户仅使用http冲浪登录时,我的应用程序被重定向到安全画布url,并且我的签名请求参数丢失。如果没有signed_request参数,我无法确定我的应用程序应该为哪个页面提供服务 当我清空浏览器缓存时,将使用我应用程序的正确http URL 是否有办法始终在FB应用
签名请求
,并提供此特定FB页面的内容
当我的用户在FB中使用https
冲浪注销,而下一个用户仅使用http
冲浪登录时,我的应用程序被重定向到安全画布url,并且我的签名请求
参数丢失。如果没有signed_request
参数,我无法确定我的应用程序应该为哪个页面提供服务
当我清空浏览器缓存时,将使用我应用程序的正确http URL
是否有办法始终在FB应用程序中使用https
,或阻止浏览器缓存https
URL
谢谢 如果希望从http重定向到https,并且不丢失signed_request POST参数,可以在重定向之前手动将其挂起,并将其作为GET参数附加到URL。看下面
// 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();
}
如果希望从http重定向到https,并且不丢失signed_request POST参数,可以在重定向之前手动将其挂起,并将其作为GET参数附加到URL。看下面
// 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();
}
对不起,我认为你没有权利。你的应用程序被Facebook以$u POST['signed\u request']方式调用。此外,Facebook每次通过https调用我的tab应用程序,无论是通过http还是https加载的FB页面。OK,问题似乎是Chrome特有的:对不起,但我认为你没有权利。你的应用程序被Facebook以$u POST['signed\u request']方式调用。此外,Facebook每次通过https调用我的tab应用程序,无论是通过http还是https.OK加载的FB页面,问题似乎都与Chrome有关: