Symfony2 响应

Symfony2 Response

我正在尝试为 Oauth 发送对 API 的响应。可悲的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。

这是我的 OauthController 内部的响应部分:

    $response = new Response();

    $response->setStatusCode(200);
    $response->headers->set('Location', 'url=' . $auth_url);

    return $response->send();

控制器必须有一个 return 语句所以,我的代码看起来不错吗?或者我如何从正常的 php 复制 header('Location: ' . $auth_url);

谢谢!

既然要重定向,那么可以使用RedirectResponse instead of regular Response:

return new RedirectResponse($auth_url);

虽然@TomaszMadeyski 为您提供了更好的选择,但我想花点时间解释一下为什么您的代码不起作用(因为它很好)。

问题是一个控制器多return一个响应,但它不能发送这个响应。如果您查看 the front controller,您会发现它负责发送响应:

$response = $kernel->handle($request);
$response->send();

这背后的原因是 Symfony 允许您编辑控制器和 send() 之间的响应(例如添加一个很棒的工具栏或配置内容类型)。

如果您正在进行重定向,您的 HTTP response code 不应该是 300 范围内的代码之一以指示重定向吗?

此外,您可能想查看此 Symfony Cookbook article on redirecting