django-recaptcha从小部件请求中获取500内部服务器错误

时间:2014-03-07 15:50:21

标签: javascript ajax django recaptcha

我已将django-recaptcha集成到我的项目中,并将该字段添加到我的某个表单类型中。然后我将小部件放在页面上只需将小部件的HTML字符串传递给我的模板,如下所示:

dctResponse['recaptcha_html'] = form.fields['captcha_field'].widget.render('captcha', 'enter captcha')

这会在我的页面中添加以下内容:

    <script type="text/javascript">
            var DjangoRecaptchaOptions = {
          "lang": "en"
        };
            if (typeof RecaptchaOptions !== 'object') {
                RecaptchaOptions = DjangoRecaptchaOptions;
            } else {
                for (key in DjangoRecaptchaOptions) {
                    RecaptchaOptions[key] = DjangoRecaptchaOptions[key];
                }
            }
    </script>
    <script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=MY_PUBLIC_KEY&hl=en"></script>
    <noscript>
      <iframe src="https://www.google.com/recaptcha/api/noscript?k=MY_PUBLIC_KEY&hl=en" height="300" width="500" frameborder="0"></iframe><br />
      <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
      <input type='hidden' name='recaptcha_response_field' value='manual_challenge' />
    </noscript>

当我检查呈现页面的HTML源代码时,该代码是可见的,但浏览器中没有显示任何内容。在查看Javascript控制台输出时,我收到以下错误消息:

GET https://www.google.com/recaptcha/api/challenge?k=MY_PUBLIC_KEY&hl=en 500 (Internal Server Error)

奇怪的是,当我在浏览器中输入上述地址时,我收到以下回复:

var RecaptchaState = {
    site : 'PUBLIC_KEY',
    rtl : false,
    challenge : 'CHALLENGE_STRING',
    is_incorrect : false,
    programming_error : '',
    error_message : '',
    server : 'https://www.google.com/recaptcha/api/',
    lang : 'en',
    timeout : 1800
};

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

在我的页面上从JS调用时,停止请求的工作可能会发生什么?它可能与另一个脚本发生冲突吗?此外,这是通过SSL运行的方式:我正在使用它的页面通过SSL提供,RECAPTCHA_USE_SSL变量设置为True

0 个答案:

没有答案