我試圖在Django中創建一個Web服務。出於某種原因,它在GET請求中工作,但不是作爲POST(這是我的要求)。我有以下網址:用於POST數據的Django webservice
url(r'^rest/user/(.*)/(.*)/$', 'rest.views.user.user')
因此,如果用戶是發送消息給/rest/user/ANY_CHARACTER/ANY_CHARACTER/
,它會去以下功能:
def user(request, string1, string2):
if request.method == "POST":
return HttpResponse(string1 + ' ' + string2)
else:
return HttpResponse('error')
每次我發送一個GET請求,我是得到error
(這是正確的),但每次我發送相同的URL作爲POST,我得到HTTP 500錯誤。有什麼我在這裏失蹤?
編輯
錯誤日誌中的終端有以下幾點: [02/Jul/2012 19:13:57] "POST /rest/user/hi/hi HTTP/1.1" 500 61994
然而,當我發送相同的命令如GET,我沒有得到任何錯誤......這是很奇怪。
編輯1
我注意到下面的錯誤,當我發送POST請求,它適用於所有其他類型:
<p>Reason given for failure:</p>
<pre>
CSRF token missing or incorrect.
</pre>
<p>In general, this can occur when there is a genuine Cross Site Request Forgery, or when
<a href='http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf'>Django's
CSRF mechanism</a> has not been used correctly. For POST forms, you need to
ensure:</p>
我的問題是...我怎麼處理這對於webservice請求?抱歉,試圖尋找這個,但有沒有辦法繞過RESTful web服務請求的CSRF?
錯誤日誌說...? –
我之前看到過類似情況發生過這種情況......它在POST中要求提供CSRF保護,它是否僅在GET或POST以外的任何其他情況下工作? (即GET,PUT等) – KVISH
是的..我只是嘗試PUT,它的工作。我從POST獲得的消息確實表示CSRF ......只是注意到了這一點。我會編輯錯誤。 – KVISH