Symfony Ajax 同源策略

Symfony Ajax same origin policy

我正在尝试从以下域发送 AJAX 请求:127.0.0.1:8000 至 localhost:8000。此通话以

结尾

Status Code: 405 Method Not Allowed

我已经添加了一个侦听器,它正在为原点问题发送正确的headers:

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

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

有帮助吗?

你好像少了一个逗号

$event->getResponse()->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE OPTIONS');

应该是

$event->getResponse()->headers->set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');

DELETEOPTIONS 是两种不同的方法。

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

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