在ajax请求后执行PHP重定向

时间:2016-06-29 19:50:57

标签: php ajax slim

对于银行应用程序,如果(且仅当)访问令牌无效,我需要将用户重定向到外部登录页面。此重定向只能从服务器触发,因为此访问令牌永远不会发送到客户端。

PHP看起来像这样(使用Slim框架):

$app->get( '/banking', function ( \Slim\Http\Request $request, \Slim\Http\Response $response, $args ) {
    if( token == valid ) {
      // do your stuff
    } else {

        $banking = new Banking();
        $connection = $banking->getConnection();
        return $response->withHeader( 'Location', $connection->login_url( 'someRandomString' ) );
        }
    } );

$connection->login_url()生成我想要重定向到的网址。然而,jQuery并没有将我重定向到该页面,而是将页面内容加载到成功回调函数的响应字符串中。 (我已经读过here浏览器会默默地遵循重定向)

有没有办法强制客户端实际重定向页面或帮助javascript发现它实际上应该重定向到外部页面而不是将内容加载到脚本中?怎么样?

1 个答案:

答案 0 :(得分:2)

将状态设置为302,以便浏览器进行重定向。

$response = $response->withStatus(302);
return $response->withHeader('Location', $connection->login_url( 'someRandomString' ) );

或者,当您使用Slim时,可以使用withRedirect

return $response->withRedirect($connection->login_url('someRandomString'));