我正在使用 FOSRest Bundle 构建一个 RESTFUL API,并使用如下自定义标头返回数据:class InvestorController extends AbstractFOSRestController{ /** * Retrieve a list of investors * * @Rest\Get("/{page}", defaults={"page"=1}, requirements={"page"="\d+"}) * * @param Integer $page * @param Request $request * @param InvestorRepository $investorRepository * * @return Response */ public function getInvestorsAction($page, Request $request, InvestorRepository $investorRepository) { $data = $investorRepository->getInvestorsList($page); $data = $this->getUser()->getId(); $view = $this->view($data, 200) ->setHeader('Access-Control-Allow-Origin', 'http://localhost:3000') // Remove this bit in PROD ->setHeader('Access-Control-Allow-Credentials', 'true'); // Remove this bit in PROD return $this->handleView($view); }}现在我想为这个控制器中的所有响应传递这些标头。我想避免每次都手动发送它们。有没有办法自动为所有控制器的响应设置自定义标头,例如在构造函数或其他地方?
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
有多种方法可以做到这一点:
我想到的第一个是配置您的网络服务器以将这些标头附加到它基于 URL 发送的每个响应中。
第二个是利用 Symfony 内部事件系统并
kernel.response
在那里捕获并附加标题。您需要根据来自哪里过滤响应 - https://symfony.com/doc/current/reference/events.html#kernel-response另一件事是创建您自己的自定义处理程序,它调用这些
setHeader()
方法而不是在 Controller 中执行它。要提供此处理程序,您可以简单地覆盖handleView()
方法 - https://symfony.com/doc/master/bundles/FOSRestBundle/2-the-view-layer.html#custom-handler
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消