reCaptcha阻止帧(SOP?)

时间:2017-05-15 15:09:51

标签: recaptcha same-origin-policy

安装了Typo3,我已将Googles reCaptcha添加到表单中。

在其他Typo3安装上是否已经成功,但这一次,我在浏览器中收到了阻止的帧错误。

Blocked frame with origin "https://www.google.com" from accessing a cross-origin frame.
  at um.f.hc (https://www.gstatic.com/recaptcha/api2/....)

这种情况发生了两次,之后,我在前端接受按摩。

  

请升级到支持的浏览器以获取reCAPTCHA质询。

     

或者,如果您认为此页面出错,请检查您的互联网连接并重新加载。

     

为什么会发生这种情况?

我检查的所有浏览器(Chrome,FF,IE11)都会发生这种情况。

要包含reCaptcha,我将以下内容添加到模板中:

  <script src="//www.google.com/recaptcha/api.js" async defer></script>
  <script type="text/javascript">
    var captchaCallback = function() { document.getElementById("captchaResponse").value = document.getElementById("g-recaptcha-response").value }
    var onSuccess = function(response) {
      var errorDivs = document.getElementsByClassName("recaptcha-error");
      if (errorDivs.length) {
        errorDivs[0].className = "";
      }
      var errorMsgs = document.getElementsByClassName("recaptcha-error-message");
      if (errorMsgs.length) {
        errorMsgs[0].parentNode.removeChild(errorMsgs[0]);
      }
      captchaCallback();
      document.getElementById("fhcallback").submit();
    };
  </script>
  <input type="hidden" id="captchaResponse" name="fhcb[recaptcha]" value="" />
  <div id="recaptcha-demo" class="g-recaptcha" data-sitekey="[MYPUBLICKEY]" data-callback="onSuccess" data-bind="inp-submit"></div>
  <button class="orderButton bold" id="inp-submit" ###submit_nextStep###>Senden</button>

在PHP中:

$secret = '[MYSECRETKEY]';
$url = 'https://www.google.com/recaptcha/api/siteverify';
$apiResponse = json_decode(\TYPO3\CMS\Core\Utility\GeneralUtility::getUrl($url.'?secret='.$secret.'&response='.$this->gp[$this->formFieldName]), true);
if($apiResponse['success'] == FALSE) {
    $checkFailed = $this->getCheckFailed();    
}

表单在页面加载时不可见。在点击其切换元素后,它会在页面右侧滑动。

我没有想法,客户也在烦我。

1 个答案:

答案 0 :(得分:0)

我找到了问题。在此安装中,包含了JavaScript库 Mootools

删除Mootools的包含后,没有发生阻塞帧的进一步问题。