2013-07-19 6 views
0

slimPHP REST API가 구축되었습니다. 여기에 내가 헤더에 대한이 내용은 다음과 같습니다PHP REST API에서 PUT 및 DELETE 요청이 실패했지만 POST 및 GET은 괜찮습니다.

XMLHttpRequest cannot load http://www.example.com/api/x. 
Origin http://www.example.com is not allowed by Access-Control-Allow-Origin. 

이 경우 일어나는 이유는 어떤 생각 : 나는 크로스 도메인 PUT을 시도하거나 요청을 삭제하면 그러나

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Credentials: true"); 
header('Access-Control-Allow-Headers: origin, content-type, accept'); 
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT'); 
header('Access-Control-Max-Age: 86400'); 

, 내가 할 모든 (샘플 도메인)입니다 Access-Control-Allow-Origin이 *로 설정 되었습니까? Slim Framework Documentation에서

+0

어떤 종류의 서버를 실행하고 있습니까? – MysteriousWhisper

답변

1

:

불행하게도, 최신 브라우저는 HTTP의 PUT 요청에 대한 기본 지원을 제공하지 않습니다. 이 문제를 해결하려면 HTML 양식의 method 속성은 "POST"입니다 확인, 다음과 같이 당신의 HTML 양식에 메서드 재정의 매개 변수를 추가 :

<form action="/books/1" method="post"> 
     ... other form fields here... 
     <input type="hidden" name="_METHOD" value="PUT"/> 
     <input type="submit" value="Update Book"/> 
    </form> 

당신이 Backbone.js 또는 명령 행 HTTP를 사용하는 경우 클라이언트의 경우 X-HTTP-Method-Override 헤더를 사용하여 HTTP 메서드를 재정의 할 수도 있습니다.

당신은 당신이 (foo 같은 사용자 정의 것들 포함)하고 싶은 어떤 요청 유형을 사용하지만, GET과 POST는 기본적으로 최신 브라우저에서 지원하는 유일한 사람 수 있습니다.