Symfony 为每个响应添加标题

Symfony 为每个响应添加标题,symfony,silex,Symfony,Silex,如何使用Silex“自动”向每个响应添加标题 到目前为止,我对每一个回复都要做以下几点: $app->post('/photos'),函数()使用($app){ 返回$app->json(数组('status'=>'success'),200,数组('Access-Control-Allow-Origin'=>'*'); }); 相反,我希望使用before筛选器在每次请求时自动发送访问控制允许来源:: //之前 $app->before(函数()使用($app){ $response=新响应

如何使用Silex“自动”向每个响应添加标题

到目前为止,我对每一个回复都要做以下几点:

$app->post('/photos'),函数()使用($app){
返回$app->json(数组('status'=>'success'),200,数组('Access-Control-Allow-Origin'=>'*');
});
相反,我希望使用before筛选器在每次请求时自动发送
访问控制允许来源:

//之前
$app->before(函数()使用($app){
$response=新响应();
$response->headers->set('Access-Control-Allow-Origin','*');
});
//路线
$app->post('/photos'),函数()使用($app){

return$app->json(array('status'=>'success'));//您可以在
应用程序中间件之后使用
,这是方法签名:

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

$app->after(function (Request $request, Response $response) {
    // ...
});

通过这种方式,您可以获得可以自由修改的响应对象。

为什么不重载响应类?我还需要为每个请求输出一个头,但只是将其添加到我的index.php中,上面的方法是更好的方法吗?您的意思是添加了一个简单的
头()
调用吗?您应该在
后()中执行此操作
处理程序,如我的回答中所示。这需要在代码中的某个位置吗?出于某种原因,它正在破坏我的应用程序。好吧,你可以在任何地方定义after中间件。简单的
调用没有那么有效。最好在
$response->headers->set('key',value')中这样做;