为每个响应添加标头

Joh*_* B. 8 cors symfony silex

如何"自动"为Silex的每个响应添加标题?

到目前为止,我必须遵循每个回复:

$app->post('/photos'), function () use ($app) {
    return $app->json(array('status' => 'success'), 200, array('Access-Control-Allow-Origin' => '*'));
});
Run Code Online (Sandbox Code Playgroud)

相反,我想使用before过滤器Access-Control-Allow-Origin: *自动发送每个请求:

// Before
$app->before(function () use ($app) {
    $response = new Response();
    $response->headers->set('Access-Control-Allow-Origin', '*');
});

// Route
$app->post('/photos'), function () use ($app) {
    return $app->json(array('status' => 'success')); // <-- Not working, because headers aren't added yet.
});
Run Code Online (Sandbox Code Playgroud)

Mae*_*lyn 15

您可以使用after应用程序中间件,这是方法签名:

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

$app->after(function (Request $request, Response $response) {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

这样您就可以获得可以自由修改的Response对象.