Rails3 で構築された Web サイトがあり、モバイル クライアント アクセス用の json API を実装したいと考えています。ただし、protect_from_forgery フィルターが原因で、クライアントから json ポスト リクエストを送信します。クライアントはサーバーからデータを取得しないため、クライアントが auth_token を受け取る方法がないため、json リクエストに対してのみ protect_from_forgery オプションをオフにしたいと思います (rails3 はデフォルトでこれを行うと思っていましたが、明らかにそうではありません)。 .
hereで同様のトピックが議論されていることは知っていますが、その場合、彼は投稿リクエストを送信する前に auth_token を受け取ります。
だから私の質問は、json に対してのみ protect_from_forgery をオフにすることです。これはこれを行う良い方法ですか? はいの場合、どうすればよいですか?いいえの場合、代替手段は何ですか?
参考までに、次の ajax リクエストを使用します
$.ajax({
type: 'POST',
url: "http://www.example.com/login.json",
data: { 'email': emailVal, 'password': passwordVal },
success: onSuccess,
error: onError,
dataType: "json"
});
ActionController::InvalidAuthenticityToken エラーが発生します。
ちなみに、次のcurlコマンドは機能しますが...
curl -H "Content-Type: application/json" -c cookies.txt -d '{"email": emailVal, "password": passwordVal}' -X POST http://www.example.com/login.json -i