2013-11-22 17 views
6

Próbuję użyć interfejsu API REST napisanego w Slim Framework.

Uzyskaj & Metody postów działają bez żadnych problemów. Jednak polecenia DELETE nie działają. Otrzymuję "Metoda DELETE nie jest dozwolona przez Access-Control-Allow-Methods"

Już pozwoliłem OPCJE jak i DELETE w nagłówkach. Zobacz kod poniżej.

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Headers: Content-Type'); 
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); 

$app->options('/(:name+)', function() use($app) {     
    $response = $app->response(); 
    $app->response()->status(200); 
    $response->header('Access-Control-Allow-Origin', '*'); 
    $response->header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, X-authentication, X-client'); 
    $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); 
}); 

Jaka może być przyczyna niepowodzenia tego żądania?

Odpowiedz

5

Obecna wersja Nginx (1.0.x) wydaje się nie obsługiwać żądań HTTP OPTIONS. Zwraca 405 "Method Not Allowed", gdy to żądanie zostanie wysłane. Dodałem nagłówki do pliku konfiguracyjnego serwera nginx, który naprawił mój problem.

location/{ 
     alias /usr/share/nginx/webapp/; 
     try_files $uri $uri/ /index.php; 
     if ($request_method = 'OPTIONS') { 
      add_header 'Access-Control-Allow-Origin' '*'; 
      add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
      add_header 'Access-Control-Allow-Methods' "GET, POST, OPTIONS, DELETE"; 
      add_header 'Access-Control-Max-Age' 1728000; 
     return 200; 
    } 

    } 

-