Symfony Ajax同源政策

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');
    }
}

但是即使是标题,您也可以在下图中看到,它不可能成为请求。

有帮助吗?

enter


您似乎缺少逗号

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');

DELETEOPTIONS是两个单独的方法。


我必须在我的Symfony控制器中允许使用OPTIONS方法:

1
* @Method({"GET","POST","OPTIONS"})