Google reCAPTCHA、405 错误和 CORS 问题

2024-03-26

我正在使用 AngularJS 并尝试使用 Google 的 reCAPTCHA, 我正在使用“显式呈现 reCAPTCHA 小部件“在我的网页上显示 reCAPTCHA 的方法,

HTML 代码 -

<script type="text/javascript">
    var onloadCallback = function() 
    {
        grecaptcha.render('loginCapcha', {
            'sitekey' : 'someSiteKey',
            'callback' : verifyCallback,
            'theme':'dark'

        });
    };

    var auth='';
    var verifyCallback = function(response) 
    {
       //storing the Google response in a Global js variable auth, to be used in the controller
        auth = response;

        var scope = angular.element(document.getElementById('loginCapcha')).scope();
        scope.auth();
    };
</script>

<div id="loginCapcha"></div>


<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>

到目前为止,我能够实现所需的功能,无论用户是人类还是机器人,
根据我上面的代码,我有一个名为“verifyCallback”的回调函数在我的代码中,
这是存储 Google 创建的响应,在名为“auth”的全局变量中。

现在,reCAPTCHA 的最后一部分是调用 Google API,
with "https://www.google.com/recaptcha/api/siteverify https://www.google.com/recaptcha/api/siteverify“ 作为 URL 并使用POST method,
并通过它密钥Response由 Google 创建,我在下面的代码中完成了。

我的控制器 -

_myApp.controller('loginController',['$rootScope','$scope','$http',
 function($rootScope,$scope,$http){

    var verified = '';

    $scope.auth = function()
    {
        //Secret key provided by Google
        secret = "someSecretKey";

       /*calling the Google API, passing it the Secretkey and Response,
       to the specified URL, using POST method*/

        var verificationReq = {

            method: 'POST',
            url: 'https://www.google.com/recaptcha/api/siteverify',
            headers: {
                 'Access-Control-Allow-Origin':'*'
             },
            params:{
                secret: secret,
                response: auth
            }

        }


        $http(verificationReq).then(function(response) 
        {
            if(response.data.success==true)
            {
                console.log("Not a Bot");
                verified = true;
            }
            else
            {
                console.log("Bot or some problem");
            }

        }, function() {
           // do on response failure
        });
    }

所以,我实际上面临的问题是我无法访问 Google 的 URL,
以下是我发送的请求和错误的屏幕截图。

Request made -
enter image description here

Error Response - enter image description here

据我了解,这与 CORS 和预检请求有关.
那么我做错了什么?我该如何解决这个问题?


正如谷歌文档中所述https://developers.google.com/recaptcha/docs/verify https://developers.google.com/recaptcha/docs/verify

本页介绍如何从应用程序后端验证用户对 reCAPTCHA 质询的响应。

验证是从服务器发起的,而不是客户端。

这是服务器的额外安全步骤,以确保来自客户端的请求合法。否则,客户端可能会伪造响应,服务器将盲目地相信客户端是经过验证的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google reCAPTCHA、405 错误和 CORS 问题 的相关文章

随机推荐

  • 在 py.test 中的每个测试之前和之后运行代码?

    我想在测试套件中的每个测试之前和之后运行额外的设置和拆卸检查 我看过固定装置 但不确定它们是否是正确的方法 我需要在每次测试之前运行设置代码 并且需要在每次测试后运行拆卸检查 我的用例是检查未正确清理的代码 它会留下临时文件 在我的设置中
  • TypeScript 类装饰器获取类名

    我试图在运行时在类装饰器中获取类的名称 缩小 当我这样做时 const metadata Reflect getMetadata design type target constructor 我变得不确定 我需要知道类名而不是缩小值 我认为
  • Objective C - 获取今天(明天)的第二天

    如何检查某个日期是否本质上是 明天 我不想在像今天这样的日期上添加时间或任何内容 因为如果今天已经22 59 添加太多会延续到后天 添加太少则时间到了12 00会错过明天 我怎样才能检查两个NSDate并确保其中一个相当于另一个的明天 Us
  • Sklearn ROC AUC 分数:ValueError:y 应该是一个一维数组,而是一个形状为 (15, 2) 的数组

    我有这个带有目标的数据集LULUS 这是一个不平衡数据集 我正在尝试打印roc auc如果我可以对数据的每个折叠进行评分 但在每个折叠中 不知怎的 它总是会引发错误说ValueError y should be a 1d array got
  • 断点指出“objc_autoreleaseNoPool”

    因此 我正在调试一个应用程序 为其应用程序发布做准备 并且我为 所有异常 启用了通用断点 从那时起 每次我运行该应用程序时 控制台都会打印 捕获点 2 抛出 挂起的断点 1 objc exception throw 已解决 objc 117
  • Laravel 具有不同的会话生命周期

    问 如何在 Laravel 5 中创建不同生命周期的会话 这个问题不是重复的这个问题 https stackoverflow com q 40258339 1474817 我不想将其用于任何类型的登录或注册 我只想将其存储 5 分钟 因为获
  • 如何像编译器一样获取每个虚函数索引?

    是否有一些插件或工具可以读取 h 文件 或简单地修改 Intellisense 本身 并吐出每个函数及其虚拟函数表索引 有一种模式我还没有弄清楚与多态性有关 当你开始有 5 个或更多的类相互派生时 它就会变得困难 5 倍 但无论如何 MSV
  • IntelliJ IDEA:如何修复损坏的字体显示?

    无法阅读该语言 怎么设置成英文呢 The issue is not with the language but with some broken font mapping on your system The workaround is t
  • Node.js + Azure SQL 数据库

    我正在挣扎微软的node js sql客户端 https github com WindowsAzure node sqlserver 我已经安装了它 使用 github 页面上的指南没有任何错误 并且一切在本地运行完美 但是当我使用 gi
  • 如何根据 HTML 从统计页面中提取玩家信息?

    我正在尝试使用 selenium 抓取网站的一些信息 下面是该网站的链接http www ultimatetennisstatistics com playerProfile playerId 4742 http www ultimatet
  • C语言中的宏(#define)

    我正在阅读hoard内存分配器的源代码 在gnuwrapper cpp文件中 有以下代码 define CUSTOM MALLOC x CUSTOM PREFIX malloc x 是什么意思CUSTOM PREFIX malloc x i
  • MPAndroidChart 条形图 - 如何对组之间具有随机 x 轴间隔的条形进行分组?

    我想制作一个条形图 其中每个数据点将 3 个不同的数据集分组在一起 如下所示 但是 我无法使用库提供的功能将条形图分组在一起groupBars方法 因为无论我为条目设置什么 x 值 它都会根据我在其参数中指定的间隔对条形进行分组 例如 如果
  • 镜头:新型变焦

    我有兴趣获得zooming我的 monad 变压器堆栈的功能定义如下 newtype Awesome a Awesome StateT AwesomeState ExceptT B ByteString IO a deriving Func
  • Python 将列表转换为集合,大 O

    感谢您的帮助 words Big list of words words set set words 当 n len words 时 我很难确定 set words 的复杂性是多少 是 O n 因为它在列表的所有项目上移动 还是 O l n
  • 如何让odeint成功?

    我是 python 初学者 目前使用 scipy 的odeint计算耦合的 ODE 系统 但是 当我运行时 python shell 总是告诉我 gt gt gt Excess work done on this call perhaps
  • 在 PHP 中将十六进制转换为图像?

    我正在开发通过以下方式与服务器通信的移动应用程序PHP Webservice 这是我第一次使用 PHP 我设法将数据上传到数据库 现在我需要发送图像以将其存储在 ftp 服务器中 为此我转换了image gt hex并从我的应用程序发送 服
  • 如何在安装时强制 Chrome 扩展上的键盘快捷键

    我正在尝试实现一个使用键盘快捷键触发事件的 Chrome 扩展 快捷方式在这里声明 commands sample suggested key default Ctrl I windows Ctrl I description Refres
  • emacs autoloaded 中保证自动加载功能的机制是什么

    我知道所有标有 Autoload 行的函数都将是自动加载函数 但问题是执行此 自动加载函数 的底层机制是什么 还有为什么当从 elpa 安装软件包时 会出现一个名为 XXX autoload elc 的编译文件 当您安装 Elpa 软件包时
  • Php变量存储字符串时的大小限制是多少?

    情况是这样的 我有一个 2Gb 的转储文件 名为myDB sql 它是一个转储文件 可删除现有数据库并创建一个带有视图和触发器的新数据库 所以我有字符串myDB OLD分布在许多行代码中 我想将这些字符串的出现次数更改为myDB NEW 我
  • Google reCAPTCHA、405 错误和 CORS 问题

    我正在使用 AngularJS 并尝试使用 Google 的 reCAPTCHA 我正在使用 显式呈现 reCAPTCHA 小部件 在我的网页上显示 reCAPTCHA 的方法 HTML 代码