2014-09-26 2 views
0

이 질문은 내가 게시 한이 질문과 관련이 있습니다. 나는 CORS 오류를 해결하기 위해 관리

Allow my API to be access via AJAX

, 나는 http://enable-cors.org/server_apache.html의 지침에 따라 추가 생각합니다. 문제는 지금 나타나지 않습니다.

하지만 이번에는 405 오류가 발생합니다. 그 이유는 확실하지 않습니다.

클라이언트

var appOrigin = 'http://event.chart.local/api/vendor/events.json'; 
app.factory('chartListLoadService',['$http',function($http){ 
    return { 
     fetchList: function(city){ 
      var data  = {city:city}; 
      $http({ 
       method:'post', 
       url:appOrigin, 
       data:data 
      }).success(function(data){ 
       alert(data); 
      }); 
     }, 
     testFunction:function(){ 
      alert('testing'); 
     } 
    }; 
}]); 

서버

public function post_events() 
{ 
    $city = Input::post('city','all'); 
    $c = Model_chart::format_chart($city); 
    return $this->response($c); 
} 

헤더 정보 FuelPHP 측에서

Remote Address:127.0.0.1:80 
Request URL:http://event.chart.local/api/vendor/events.json 
Request Method:OPTIONS 
Status Code:405 Method Not Allowed 
Request Headersview parsed 
OPTIONS /api/vendor/events.json HTTP/1.1 
Host: event.chart.local 
Connection: keep-alive 
Access-Control-Request-Method: POST 
Origin: http://app.event.chart 
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 
Access-Control-Request-Headers: accept, content-type 
Accept: */* 
Referer: http://app.event.chart/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Response Headersview parsed 
HTTP/1.1 405 Method Not Allowed 
Date: Fri, 26 Sep 2014 02:48:33 GMT 
Server: Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.11 
X-Powered-By: PHP/5.5.11 
Access-Control-Allow-Origin: http://app.event.chart 
Access-Control-Allow-Methods: POST, GET, OPTIONS 
Access-Control-Allow-Headers: Content-Type 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Content-Type: text/html 
+0

서버가 OPTIONS 요청을 허용합니까? 응답에'Access-Control-Allow-Methods : POST, GET, OPTIONS'를 추가하십시오. – akonsu

+0

예. 위의 헤더 정보에서 볼 수 있습니다. @akonsu –

+0

정말로'events.json'입니까? json 파일에 어떻게 게시 할 수 있습니까? 'get '을 의미 했습니까, 아니면 api가 다른 것입니까? – PSL

답변

0

:

가정이 방지 동작을 만들 Controller_Rest를 사용 onality :

요청이 컨트롤러의 모든 메소드와 일치하지 않으면 405 상태를 반환합니다.

http://event.chart.local/api/vendor/events.json과 같은 링크를 사용하면 컨트롤러가 Controller_Api_Vendor (또는 네임 스페이스 변형)이고 메서드가 "이벤트"입니까?

그런 경우 options_events() 또는 action_events()를 찾습니다. 이들 중 하나가 존재하고 호출 가능한 경우, 405는 Fuel에 의해 생성되지 않습니다.

+0

정상적인 컬 요청시 링크가 작동합니다. Controller_Rest를 사용하고 있으며 post_event 함수 이름에 표시된대로 올바른 메소드에 있습니다. –

+0

그렇다면 귀하의 웹 서버가 이러한 요청을 수락하도록 구성되지 않았다고 가정 할 수 있습니다. – WanWizard