2011-05-12 37 views
1

當從CouchApp提供靜態資產(例如,Backbone.js應用程序的HTML和JS)時,當靜態頁面被POST時,適當地踢出405方法不允許錯誤。但是,當爲canvas/iframe開發Facebook應用程序時,Facebook將所有請求作爲POST發送。有什麼辦法讓Couch允許POST方法嗎?允許POST發送到CouchDB中的靜態文件CouchApp

+0

等待,即使你*可以*發佈到靜態文檔附件,無論如何,在理想的世界裏,你會期望結果是什麼?你肯定可以收到一個_show函數的POST;我想知道是否有可能的解決方法,但我希望更多地瞭解您的詳細信息。 – JasonSmith 2011-05-18 00:26:33

+0

顯然它在邏輯上沒有任何意義,但FB要求發佈到Canvas頁面(由於沒有服務器端處理,因此CouchApp是靜態頁面)... – Leon 2011-12-19 11:55:48

回答

0

我對此很悲觀。我不確定,但它可能是不可能的。

是否可以告訴Facebook添加自定義標題? Couch在POST請求中支持一個X-HTTP-Method-Override頭。只需將其設置爲您真正想要的HTTP方法即可。

+0

無法告訴Facebook添加自定義標題。我想我可能需要在FB和Couch之間設置代理,這不幸消除了CouchApp的所有好處。 – 2011-05-17 05:03:54

+0

無賴。我還有一些問題要添加到問題部分。 – JasonSmith 2011-05-18 00:25:06

0

我遇到了同樣的問題,到目前爲止,我只能讓CouchDB輸出javascript來重定向我的請求(所以基本上是客戶端的瀏覽器),從而避免了另一個主機。

由於@JasonSmith評論說,_show函數能夠接收POST方法;所以我基本上創建了一個名爲顯示一個新的_show函數/的proxy.js它(在它的最基本的功能)僅包括這樣的:

function(doc, req) { 
    return "<script>document.location='TARGETURL';</script>";  
} 

與你的真實帆布URL頁面替換TargetURL中。 後來我設置了FB帆布URL指向此頁面,

http://fbdemo.iriscouch.com/fbdemo/_design/fbdemo/_show/proxy? 

這個作品在FB畫布就好了,終於顯示了我CouchApp!下一步是開始傳遞來自FB的QueryString參數(取決於登錄,圖形等),但我將其作爲練習留給我們的讀者;-)

希望這有助於!