我正在使用CakePHP 3开发REST API。我想公开启用它,因此任何人都可以调用该API。因此,我添加了此处定义的cors标头:http ://book.cakephp.org/3.0/en/controllers/request-response.html#setting-cross-origin-request-headers-cors
我已经在Dispatcher.beforeDispatch和Dispatcher.beforeDispatch上实现了EventListener,以准备cors标头。
class ApiResponseHeaders implements EventListenerInterface
{
/**
* Event bindings
*
* @return array
*/
public function implementedEvents()
{
return [
'Dispatcher.beforeDispatch' => [
'callable' => 'beforeDispatch',
'priority' => 0
],
'Dispatcher.afterDispatch' => [
'callable' => 'afterDispatch',
'priority' => 99999
]
];
}
public function beforeDispatch(Event $event)
{
$request = $event->data['request'];
if ('OPTIONS' === $request->method()) {
$event->stopPropagation();
}
}
public function afterDispatch(Event $event)
{
$request = $event->data['request'];
$response = $event->data['response'];
$response->cors($request)
->allowOrigin('*')
->allowMethods(['GET', 'POST', 'OPTIONS']) …Run Code Online (Sandbox Code Playgroud)