Recaptcha - Инъекция тегов сценария периодически завершается сбоем

У меня есть форма, в которой используется reCAPTCHA. По какой-то причине, когда пользователь отправляет эту форму с неверным значением повторного захвата, когда страница повторно визуализируется, повторный захват не может быть отображен.

Похоже, что это происходит, повторный захват пытается внедрить тег "скрипт" , и время от времени (и только в определенных браузерах, в определенных средах, и в некоторых сценариях) не удается добавить этот тег «скрипт» в DOM.

Это происходит примерно так:

1) В форму встроен встроенный JavaScript, который выглядит следующим образом:

https://www.google.com/recaptcha/api/challenge?k=<our public key>

2) Этот скрипт выполняется правильно и возвращает следующее:

var RecaptchaState = {
 site : <some value>,
 challenge : <challenge key>,
 is_incorrect : false,
 programming_error : '',
 error_message : '',
 server : 'https://www.google.com/recaptcha/api/',
 timeout : 18000
};

document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');

3) После этого обычно происходит то, что тег скрипта вводится на страницу, загружается recaptcha.js, и он будет читать RecaptchaState, чтобы вызвать recaptcha для визуализации изображения.

Однако в некоторых случаях по какой-то причине тег скрипта, который должен быть добавлен в 2), никогда не появляется в DOM, поэтому recaptcha.js никогда не загружается, поэтому recaptcha никогда не отображается! Я вижу в консоли после того, как страница отрисована, что «RecaptchaState» существует и имеет правильное значение, просто нет тега скрипта, который мог бы быть с ним.

Так что ' что происходит, и я действительно не понимаю, почему. Я могу воспроизвести это только в Firefox, и, как ни странно, это происходит только при определенных условиях. Например, если я маршрутизирую запросы через скрипач, он будет работать каждый раз и никогда не откажет. Если я очищу свой кеш перед отправкой запроса, он будет работать каждый раз. Иногда, когда я ожидаю неудачи, это работает, и наоборот. Так что это очень спорадически.

Я думаю, что, возможно, это имеет какое-то отношение к времени загрузки js, которое мешает оператору "document.write". Может быть, этому мешает какой-то другой javascript или что-то в этом роде. Просто ищу некоторые общие идеи относительно того, как я могу попытаться разобраться в этом, тесты, которые я могу запустить, вещи, которые я могу искать, или любые идеи в целом.

Заранее спасибо

Обновление

Все равно не удалось разобраться. Одна мысль у меня была ... мы не видим сообщений об ошибках в консоли firebug, которые указывали бы на то, что что-то идет не так, хотя что-то очевидно. Есть ли какие-нибудь утилиты, которые мы могли бы использовать, чтобы лучше понять, что происходит в Firefox? Я думаю о чем-то вроде «Speed-Tracer» для Chrome, который дает вам очень подробную хронологию событий. Единственная проблема здесь в том, что мы не можем воспроизвести который дает вам очень подробную хронологию событий. Единственная проблема здесь в том, что мы не можем воспроизвести который дает вам очень подробную хронологию событий. Единственная проблема здесь в том, что мы не можем воспроизвести это в Chrome.

5
задан JasonStoltz 4 May 2011 в 20:14
поделиться