2016-07-29 95 views
0

我用Symfony FOSRestBundle編寫了一個REST服務。它適用於GET請求。現在,我試圖訪問與Ember«模型「,我得到一個錯誤消息。事實上,Ember嘗試訪問與OPTIONS請求(預檢),並失敗與«請求標題字段訪問控制允許來源通過訪問控制允許報頭在預檢響應»不允許 我試圖與郵差訪問REST服務,我得到這個錯誤: 帶有選項http://myUrl.local/groups:「405不允許的方法»FOSRest選項請求返回405方法不允許

,但它的工作原理罰款,如果我打電話選項http://myUrl.local/

我使用埃爾卡皮坦(IMAC)下的Apache。 我試圖將這些行追加到/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協議(跨源資源共享)。

您已正確識別需要設置的標題。爲什麼它不工作的原因是/groups大概路線類似這樣的操作:

<?php 

namespace AppBundle\Controller; 

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

由於此操作需要的方法GET,任何其他方法的FOSRestBundle塊的請求,並返回狀態代碼405你是獲得。這也是爲什麼一個選項請求/工作正常 - 它不是你的服務器阻止它,它是FOSRestBundle。使用NelmioCorsBundle正確處理預檢。束

  • 把手CORS預檢OPTIONS請求
  • 再添CORS頭到您的答覆

issue #587以供參考。

相關問題