DjangoでWebサービスを作成しようとしています。何らかの理由で、GETリクエストでは機能していますが、POSTとしては機能していません(これは私の要件です)。私は以下のURLを持っています:
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
します(これは正しいです)が、POSTと同じURLを送信するたびに、HTTP500エラーが発生します。ここに欠けているものはありますか?
編集
ターミナルのエラーログには次のものがあります。
[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>
私の質問は...Webサービスリクエストに対してこれをどのように処理するのですか?申し訳ありませんが、これを検索してみましたが、RESTful WebサービスリクエストのCSRFを回避する方法はありますか?