我已经暂时停留了这个错误一段时间了,我正在开发一个Angular(1.6.1)应用程序,当我调用一个写入的API(我可以访问和修改)的删除方法时symfony 3。 我以前使用post方法有一个预检错误,我设法通过更改请求的标题来解决。
现在我的API调用了:
$http.delete('http://localhost:8000/utilisateurs/2').then(function(response) {
$location.path('/register');
})
来自API的CorsListener:
class CorsListener {
public function onKernelResponse(FilterResponseEvent $event)
$response = $event - > getResponse();
$responseHeaders = $response - > headers;
$responseHeaders - > set('Access-Control-Allow-Headers', 'origin, content-type, accept, X-Requested-With ');
$responseHeaders - > set('Access-Control-Allow-Origin', '*');
$responseHeaders - > set('Access-Control-Allow-Credentials', 'true');
$responseHeaders - > set('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, PATCH, OPTIONS');
$event - > setResponse($response);
}
}
.htaccess行可能会有所帮助:
<ifModule mod_headers.c>
Header always set Access-Control-Allow-Origin: "*"
Header always set Access-Control-Allow-Headers "origin, x-requested-with, content-type, Access-Control-Allow-Origin"
Header always set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS"
请求作为OPTION发送,我无法根据此更改该行为:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS。
mod_headers确实在我的apache conf中激活了,我现在还不知道该怎么做,谢谢你的帮助!
答案 0 :(得分:0)
好吧,我设法用NelmioCorsBundle解决了这个问题,这里有配置帮助:
nelmio_cors:
paths:
'^/':
allow_credentials: true
allow_origin: ['*']
allow_headers: ['X-Requested-With', 'X-Prototype-Version', 'Cache-Control', 'Pragma', 'Origin', 'Content-Type', 'Accept']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'PATCH', 'OPTIONS']
expose_headers: ['Access-Control-Allow-Origin']
max_age: 3600