2012-02-23 8 views
5

Estoy intentando configurar un servicio web RESTful en mi servidor local apache para que sirva de servidor para mi aplicación de red troncal. He tratado:Configuración de un servicio RESTful para Backbone.js con apache y Windows

  1. Configuración de WebDAV, pero conseguir los siguientes mensajes de error en los registros de

    [Vie Ene 23 de 2012 21:46:17] [error] [cliente 127.0.0.1] No se puede PONER nuevos contenidos para/clusters/19. [403, # 0], referer: http://ideas.localhost/ [jue 23 feb 21:46:17 2012] [error] [cliente 127.0.0.1] Se produjo un error al abrir un recurso. [500, # 0], árbitro: http://ideas.localhost/

  2. Usando Backbone.emulateHTTP, lo que provoca una 405 method not allowed error (algo que supongo que es causada por la cabecera X-HTTP-Method-Override: PUT como las peticiones POST normales están trabajando bien

I' estoy con Apache 2.2.21 y PHP 5.3 en windows 7, y a continuación es mi archivo .htaccess. también estoy usando el marco de SLIM para manejar el enrutamiento de URL.

RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

y de configuración de host virtual

<VirtualHost *:80> 
    DocumentRoot "G:/sites/ideas" 
    Dav On // I also had security setting set to Allow all as it's just my localhost 
    ServerName ideas.localhost 
    ErrorLog "logs/ideas.localhost-error.log" 
    CustomLog "logs/ideas.localhost-access.log" combined 
    SetEnv APPLICATION_ENV development 
</VirtualHost> 

He estado luchando para obtener algo para trabajar durante años, por lo que cualquier ayuda apreciada.

+0

¿Está haciendo un subdominio en localhost? – Bakudan

+0

Sí, configuración pegada encima de – wheresrhys

+0

Además, y actualización - Me atascó tanto con la configuración del servidor usando web dav que cuando encendí Backbone.emulateHTTP omití hacer la debida depuración de PHP. Resulta que SLIM está recibiendo la solicitud y luego arrojando el error 405, así que tal vez solo necesito configurar la aplicación para buscar los encabezados. – wheresrhys

Respuesta

4

No puedo creer que haya resuelto el problema menos de una hora después de abrir una recompensa, pero hola ho.

El problema es que Slim no tiene una capacidad integrada para manejar el encabezado X-HTTP-Method-Override utilizado por la red troncal y el mensaje de error no es muy descriptivo. Añadiendo lo siguiente en la parte inferior de request.php y el uso de emulateHTTP modo en el Backbone fija que

protected function checkForHttpMethodOverride() { 
    if (isset($this->post[self::METHOD_OVERRIDE])) { 
     $this->method = $this->post[self::METHOD_OVERRIDE]; 
     unset($this->post[self::METHOD_OVERRIDE]); 
     if ($this->isPut()) { 
      $this->put = $this->post; 
     } 
    } else if(isset($this->headers['x-method-override'])) { 
     $this->method = $this->headers['x-method-override']; 
     if ($this->isPut()) { 
      $this->put = $this->post; 
     } 
    } 
} 

PS - He creado un pull request para SLIM para incluir esto por defecto, por lo que si usted piensa que sería una buena idea incluir esto en el marco por favor deje un comentario allí

Cuestiones relacionadas