2016-07-29 4 views
0

Symfony FOSRestBundle을 사용하여 REST 서비스를 작성했습니다. 그것은 GET 요청과 함께 잘 작동합니다.FOSRest OPTIONS 요청 반환 405 메서드 사용 안 함

이제 Ember«모델 "로 액세스하려고하는데 오류 메시지가 표시됩니다. 실제로 Ember는 OPTIONS 요청 (프리 플라이트)으로 액세스하려고 시도하고«Request 헤더 필드 Access-Control-Allow-Origin . 프리 플라이트 응답»에 액세스 제어 - 허용 - 헤더에 의해 허용되지 않습니다 나는 우체부로 REST 서비스에 액세스하기 위해 시도하고 나는이 오류가 발생했습니다 : "

하지만이 작동»허용 405 방법이 아니다 : 옵션 http://myUrl.local/groups와 내가 전화하면 괜찮아. http://myUrl.local/

나는 엘 캐피 탄 (IMac)에서 아파치를 사용한다. 이 줄을 /private/etc/apache2/extra/httpd-default.conf에 추가하려고 시도했습니다. 헤더 추가 Access-Control-Allow-Origin "*" 헤더 추가 Access-Control-Allow-Headers "원본, 내용 " 헤더 추가 액세스 제어 허용 메소드"PUT, GET, POST, DELETE, OPTIONS "

VirtualHost에서 이러한 라인을 지시문에 추가하려고했습니다. 두 경우 모두 같은 결과가 나타납니다.

Symfony 또는 FOSrestBundle에서 문제가 발생했습니다.

나는 무슨 일이 일어나고 있는지 이해하는 데 도움이 필요합니다. 내가 어떻게 내 문제를 해결할 수 있는지.

답변

0

Ember 응용 프로그램이 Symfony 응용 프로그램과 동일한 도메인에서 호스팅되지 않는다고 가정합니다. 귀하의 휴대 전화에는 응용 프로그램이있을 수 있습니다. 이렇게하면 요청이 CORS 프로토콜 (Cross-Origin Resource Sharing)을 따르게됩니다.

설정해야하는 헤더를 올바르게 식별했습니다. 이 작업 방법은 GET 요구

<?php 

namespace AppBundle\Controller; 

class GroupsController 
{ 
    public function getGroupsAction() 
    {} // "get_users"   [GET] /users 
} 

으로, 다른 방법의 FOSRestBundle 블록 요청하고 당신이 405 상태 코드를 반환 작동하지 않는 이유는이 유사한 조치를 /groups 아마 루트가 있다는 것입니다 점점. 그렇기 때문에 /에 대한 OPTIONS 요청이 정상적으로 작동하는 이유입니다. 서버가 차단하지 않아도 FOSRestBundle입니다.

NelmioCorsBundle을 사용하면 사전 비행을 올바르게 처리 할 수 ​​있습니다. 번들

  • 는 응답 참조

참조 issue #587

  • 을 추가 CORS 헤더를 요청 CORS 프리 플라이트 옵션을 처리합니다.