Php Symfony2在每个响应上返回跨域标头
有没有办法将我的应用程序配置为在每次响应时返回特定的标题 我正在开发一个restful api,我需要支持跨域请求,我一直在研究CORS,但我需要在每个响应上返回这样的头:Php Symfony2在每个响应上返回跨域标头,php,symfony,cross-domain,cors,Php,Symfony,Cross Domain,Cors,有没有办法将我的应用程序配置为在每次响应时返回特定的标题 我正在开发一个restful api,我需要支持跨域请求,我一直在研究CORS,但我需要在每个响应上返回这样的头: namespace Acme\DemoBundle\EventListener; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; class ResponseListener { public function onKernelRespons
namespace Acme\DemoBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
class ResponseListener
{
public function onKernelResponse(FilterResponseEvent $event)
{
$request = $event->getRequest();
// only do something on some situations
if (false === strpos($request->headers->get('Foobar'), 'barfoo')) {
return;
}
// set the custom header of the response
$event->getResponse()->headers->set('Acme', 'demo');
}
}
访问控制允许凭据“true”
访问控制允许源“任何客户端”
访问控制允许方法“获取、放置、发布、删除、选项”
访问控制允许标头,“X-CSRF-Token,X-Requested-With,Accept,Accept Version,--内容长度,内容-MD5,内容类型,日期,X-Api-Version”
您可以创建自定义ResponseListener并为每个响应设置标题:
namespace Acme\DemoBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
class ResponseListener
{
public function onKernelResponse(FilterResponseEvent $event)
{
$request = $event->getRequest();
// only do something on some situations
if (false === strpos($request->headers->get('Foobar'), 'barfoo')) {
return;
}
// set the custom header of the response
$event->getResponse()->headers->set('Acme', 'demo');
}
}
然后将侦听器声明为服务:
# app/config/config.yml
services:
kernel.listener.your_listener_name:
class: Acme\DemoBundle\EventListener\ResponseListener
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
$response->headers->set'Access-Control-Allow-Origin'、'Any Client';