2016-07-29 5 views
0

Я написал службы REST с помощью Symfony FOSRestBundle. Он отлично работает с запросом GET.FOSREST OPTIONS запрос возврата 405 Метод не разрешен

Теперь я пытаюсь получить доступ с помощью Ember «models», и я получаю сообщение об ошибке. Действительно, Ember пытается получить доступ с запросом OPTIONS (предполетный), и ему не удалось «Поле заголовка запроса Access-Control-Allow-Origin . не допускается Access-Control-Allow-Headers в предполетной ответ » Я пытался получить доступ к службе REST с Почтальон, и я получил эту ошибку: с ВАРИАНТОВ http://myUrl.local/groups:«405 Method Not Allowed »

но это работает штраф, если я вызываю ОПЦИИ http://myUrl.local/

Я использую apache под El Capitan (IMac). Я попытался добавить эти строки в /private/etc/apache2/extra/httpd-default.conf: Заголовок добавить Access-Control-Allow-Origin "*" Заголовок заголовка Access-Control-Allow-Headers "источник, контент -type " Header add Access-Control-Allow-Methods" PUT, GET, POST, DELETE, OPTIONS "

Я попытался добавить эти строки в директиву в своем VirtualHost. Те же результаты в обоих случаях.

Проблема в Symfony или FOSrestBundle.

Мне нужна помощь, чтобы понять, что происходит. Как я могу решить свою проблему.

ответ

0

Я предполагаю, что ваше приложение Ember не размещено в том же домене, что и ваше приложение Symfony - это может быть приложение на вашем телефоне? Это заставляет ваши запросы придерживаться протокола CORS (совместное использование ресурсов Cross-Origin).

Вы правильно определили заголовки, которые необходимо установить. Причина, почему он не работает в том, что, вероятно, /groups маршруты к действию похожее на это:

<?php 

namespace AppBundle\Controller; 

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

Поскольку это действие требует метод GET, FOSRestBundle блокирует запросы любого другого метода и возвращает код состояния 405 вы получение. Вот почему запрос OPTIONS к / работал нормально - это не ваш сервер, блокирующий его, это FOSRestBundle.

Используйте NelmioCorsBundle, чтобы правильно обрабатывать предправа. Расслоение

  • Ручки CORS предполетных OPTIONS просит
  • Добавляет CORS заголовки ваших ответов

См issue #587 для справки.

Смежные вопросы