DELETE方法

时间:2017-02-24 13:18:57

标签: angularjs ajax symfony

我已经暂时停留了这个错误一段时间了,我正在开发一个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中激活了,我现在还不知道该怎么做,谢谢你的帮助!

1 个答案:

答案 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