2014-03-24 98 views
0

在我的本地機器,如果我使用:Django服務器將POST請求報告爲GET;滴POST數據

./manage.py runserver 0.0.0.0:8000 

我可以使POST請求到服務器,他們出現在字POST終端。

但是,如果我ssh到我的遠程服務器,並鍵入:

./manage.py runserver 0.0.0.0:8000 

然後,如果我做一個POST請求發送到遠程服務器,它就會收到但終端說,這是一個GET請求,而不是因爲某些原因。 POST數據從請求中刪除。

我很難確定問題出在哪裏。我不認爲它與Django是一致的,因爲runserver在本地工作正常,而且我不認爲它是Apache,因爲我在遠程機器上使用runserver。它可能是某種類型的路由器設置?

有關如何解決此問題的任何建議,我們將不勝感激。

編輯:爲了澄清,我通過使用稱爲Postman的Google Chrome擴展來測試此功能,該擴展允許您手動發送POST請求。當我在本地嘗試此操作時,我遇到了CSRF令牌問題,但後來我用csrf_exempt修飾了適用的視圖,現在它在本地運行。但是,遠程服務器仍在丟棄POST數據並將該方法報告爲GET。

+0

您究竟如何測試?您是否可能在測試POST請求中丟失了CSRF令牌? –

+0

我使用名爲Postman的Chrome擴展來發送POST請求。我對CSRF標記知之甚少,但是我從另一個標籤中檢索了一個CSRF標記,在那裏我剛剛發出了一個正常的GET請求,並將該會話使用的CSRF標記(然後將其作爲csrftoken的值)我不確定這是否是一種可行的方式。有趣的是,Django服務器正確處理請求,它只是丟棄POST數據(並且生成的日誌將請求記錄爲GET請求)。 – RevolutionTech

+0

在我原來的問題中澄清了一下CSRF令牌的內容。 – RevolutionTech

回答

0

我發現這是Postman的問題,當我使用curl生成POST請求時,我沒有任何問題。

不知道爲什麼郵差本地工作,但不是遠程雖然。