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');
DELETE
和 OPTIONS
是两种不同的方法。
我必须在我的 Symfony 控制器中允许 OPTIONS 方法:
* @Method({"GET", "POST", "OPTIONS"})
我正在尝试从以下域发送 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');
DELETE
和 OPTIONS
是两种不同的方法。
我必须在我的 Symfony 控制器中允许 OPTIONS 方法:
* @Method({"GET", "POST", "OPTIONS"})