Symfony Ajax same origin policy
我正在尝试从以下域发送AJAX请求:127.0.0.1:8000到localhost:8000。该呼叫以
结尾
Status Code: 405 Method Not Allowed
我添加了一个侦听器,该侦听器正在为起源问题发送正确的标题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php namespace AppBundle\\Listener; use Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent; /** * Class CorsListener is handling on Kernel response header actions * @package AppBundle\\Listener */ class CorsListener { public function onKernelResponse(FilterResponseEvent $event) { $request = $event->getRequest(); // allow this only for the tracking URL /*if(strpos($request->getHost(), 'api.') === false) { return; }*/ $event->getResponse()->headers->set('Access-Control-Allow-Headers', 'origin, content-type, accept'); $event->getResponse()->headers->set('Access-Control-Allow-Origin', '*'); $event->getResponse()->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE OPTIONS'); } } |
但是即使是标题,您也可以在下图中看到,它不可能成为请求。
有帮助吗?
您似乎缺少逗号
1 | $event->getResponse()->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE OPTIONS'); |
应该是
1 | $event->getResponse()->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); |
我必须在我的Symfony控制器中允许使用OPTIONS方法:
1 | * @Method({"GET","POST","OPTIONS"}) |