У меня есть webapp, загружаемый через iframe с помощью phonegap 2.3.0 для Windows Phone 8 SDK. Проблема с загрузкой через iframe заключается в том, что он вызывает Can't verify CSRF token authencity
со стороны Rails при отправке запроса $.post()
.Причины iframe Не удается проверить подлинность аутентификации CSRF n Rails
Я попробовал несколько таких подходов, как перезаписать на $.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'));
}
});
Edit: Я был в состоянии передать подлинность маркера в качестве параметра в мой пост запроса с такая же ошибка. Я начинаю считать, что ошибка не является причиной токена. Каковы другие причины возникновения ошибки?
Log:
[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
Существует жемчужина, которая позволяет рельсам отправлять заголовки P3P: https://github.com/carrot/p3p –