Windows Phone 8 SDK の phonegap 2.3.0 を使用して、iframe を介して読み込まれる webapp があります。iframe を介してロードする際の問題は、リクエストCan't verify CSRF token authencity
を送信したときに Rails 側で発生することです。$.post()
$.post()
使用$.ajax()
するsetHeaderRequest
をトークンで上書きするなど、いくつかのアプローチを試しました。また、$.ajaxSetup()
protect_from_forgery
またはを無効にするverify_authenticity_token
と、アプリが正しく読み込まれます。
webapp が別のドメインにあり (クロスドメインの問題)、csrf が単にクリックジャッキングを防ごうとしているために問題が発生していると思います。この問題を回避する方法はありますか?
これが私が投稿している方法の例です:
$.post(url, {app: {played: tiles}, no: no}, function (response) {
linkTo('#app_button', response['next']);
});
例:
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').prop('content'));
}
});
編集:同じエラーで、認証トークンをパラメーターとして投稿リクエストに渡すことができました。エラーの原因がトークンではないと信じ始めています。エラーが発生する他の理由は何ですか?
ログ:
[2539 - 2013/03/06 15:37:42] (INFO) Parameters: {"app"=>{"played"=>"tiles"}, "no"=>"no", "authenticity_token"=>"yBpUImzjtKGIejh/WCekv/GCi1zjPirib22plqfLJ1Y="}
[2539 - 2013/03/06 15:37:42] (WARN) WARNING: Can't verify CSRF token authenticity
[2539 - 2013/03/06 15:37:42] (INFO) User agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)
[2539 - 2013/03/06 15:37:42] (DEBUG) User Load (1.8ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IS NULL LIMIT 1
[2539 - 2013/03/06 15:37:42] (DEBUG) CACHE (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IS NULL LIMIT 1
[2539 - 2013/03/06 15:37:42] (DEBUG) CACHE (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IS NULL LIMIT 1
[2539 - 2013/03/06 15:37:42] (WARN) Lost session [118.143.97.82] (/locations/1/games) - Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)
[2539 - 2013/03/06 15:37:42] (DEBUG) CACHE (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IS NULL LIMIT 1