2012-02-23 3 views
5

내 백본 응용 프로그램의 백엔드 역할을하기 위해 내 로컬 호스트에 RESTful 웹 서비스를 설정하려고합니다. 내가 시도 : 로그에 다음과 같은 오류 메시지가Apache 및 Windows를 사용하는 Backbone.js 용 RESTful 서비스 설정

  1. 은 WebDAV를 설정하지만, 얻을

    [목 2월 23일 21시 46분 17초 2012] [오류]를 [클라이언트가 127.0.0.1] 없습니다/clusters/19에 대한 새로운 내용을 PUT하십시오. [403, # 0], referer : http://ideas.localhost/ [2012 년 2 월 23 일 21:46:17] [오류] [클라이언트 127.0.0.1] 리소스를 여는 중 오류가 발생했습니다. [500, # 0], 리퍼러 : 나는 정상적인 POST 요청으로 X-HTTP-Method-Override: PUT 헤더에 의해 발생 같아요 405 method not allowed error (문제의 원인 Backbone.emulateHTTP를 사용 http://ideas.localhost/

내가 '잘 작동하고 있습니다 아래 윈도우 7에 아파치 2.2.21와 PHP 5.3을 실행하고있어 나의이 htaccess로 파일. 나는 또한 URL 라우팅을 처리하기 위해 SLIM 프레임 워크를 사용하고 있습니다.

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

그리고 가상 호스트 설정

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

저는 나이 먹을 무언가를 얻으려고 애썼기 때문에 어떤 도움을 주시면 감사하겠습니다.

+0

localhost에서 하위 도메인을 만들고 있습니까? – Bakudan

+0

예, 설정은 – wheresrhys

+0

위에 붙여 넣었습니다. 또한 업데이트 - Web dav를 사용하여 서버 구성에 너무 심하게 빠져서 Backbone.emulateHTTP를 켰을 때 PHP의 적절한 디버깅을 무시했습니다. SLIM이 요청을 받고 405 오류가 발생하는 것으로 밝혀 졌기 때문에 헤더를 찾기 위해 앱을 구성해야합니다. – wheresrhys

답변

4

현상금을 공개 한 후 1 시간 이내에 문제를 해결했다고 나는 믿을 수 없지만, 안녕하세요.

Slim에는 백본에서 사용되는 X-HTTP-Method-Override 헤더를 처리 할 수있는 기능이 없으므로 오류 메시지는 그다지 잘 설명되지 않았습니다. request.php의 맨 아래에 다음과 백본 모드에서 emulateHTTP 사용을 추가하면 그것을

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 고정 - 나는 기본적으로이 포함 SLIM에 대한 pull request을 만들었습니다, 당신이 생각하는 경우가 될 것 때문에 프레임 워크에 이것을 포함시키는 것이 좋습니다. 여기에 의견을 남겨주세요.