Symfony2 - how can I set custom CORS Headers?

前端 未结 4 524
情深已故
情深已故 2020-12-25 11:50

I want to set following Headers for TWIG Template from within my DefaultController:

header(\'Access-Control-Allow-Methods: GET, POST, OPTIONS\');
header(\'Ac         


        
相关标签:
4条回答
  • 2020-12-25 12:00

    from this article:

    CorsListener.php

    <?php
    namespace MyCorp\MyBundle\Listener;
    
    use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
    
    class CorsListener
    {
        public function onKernelResponse(FilterResponseEvent $event)
        {   
            $responseHeaders = $event->getResponse()->headers;
    
            $responseHeaders->set('Access-Control-Allow-Headers', 'origin, content-type, accept');
            $responseHeaders->set('Access-Control-Allow-Origin', '*');
            $responseHeaders->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, PATCH, OPTIONS');
        }   
    }
    

    services.yml

    app.cors_listener:
        class:      MyCorp\MyBundle\Listener\CorsListener
        tags:
           - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
    
    0 讨论(0)
  • 2020-12-25 12:06

    If you are using the render() method of the controller, then you can add the necessary headers like below because render() method returns a Response object:

    $response = $this->render('AppBundle:Post:index.html.twig', array('someArgs' => $someArgs));
    $response->headers->set('Content-Type', 'text/html');
    return $response;
    
    0 讨论(0)
  • 2020-12-25 12:13

    If its inside controller then use this:

    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Response;
    
    class DefaultController extends Controller
    {
        public function indexAction()
        {
            ...    
            $response = new Response($xmlContent);
            $response->headers->set('Content-Type', 'xml');
            $response->headers->set('Another-Header', 'header-value');
            return $response;
        }
    }
    

    Just replace Content-Type with your header key and xml with value ... etc

    0 讨论(0)
  • 2020-12-25 12:16

    Using the response class:

    use Symfony\Component\HttpFoundation\Response;
    $response = new Response();
    $response->headers->set('Content-Type', 'text/html');
    $response->send();
    

    Source/Documentation

    0 讨论(0)
提交回复
热议问题