当前位置: 首页 > 知识库问答 >
问题:

Google recaptcha API POST请求给出403禁止错误

满和安
2023-03-14

POST请求给出以下请求的禁止错误。

来自Google代码存档的代码https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/recaptcha/recaptcha-php-1.11.zip

函数调用如下

$response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/siteverify",
                                      array (
                                             'privatekey' => $privkey,
                                             'remoteip' => $remoteip,
                                             'response' => $response
                                             ) + $extra_params
                                      );

功能如下

function _recaptcha_http_post($host, $path, $data, $port = 80) {

    $req = _recaptcha_qsencode ($data);

    $http_request  = "POST $path HTTP/1.0\r\n";
    $http_request .= "Host: $host\r\n";
    $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
    $http_request .= "Content-Length: " . strlen($req) . "\r\n";
    $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
    $http_request .= "\r\n";
    $http_request .= $req;

    echo "HTTP_Request - ";
    echo $http_request;

    $response = '';
    if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
            die ('Could not open socket');
    }

    fwrite($fs, $http_request);

    while ( !feof($fs) )
            $response .= fgets($fs, 1160); // One TCP-IP packet
    fclose($fs);
    echo "HTTP_Response - ";
    echo $response;
    $response = explode("\r\n\r\n", $response, 2);


    return $response; }

请求和响应如下

HTTP\U请求=POST/recaptcha/api/siteverify HTTP/1.0主机:www.google。com内容类型:application/x-www-form-urlencoded;内容长度:418用户代理:reCAPTCHA/PHP privatekey=6ldwx7auaaancawardmfaz3mtomr9bpxuo5q7v

HTTP_Response=HTTP/1.0 403禁止内容类型:文本/html;charset=UTF-8日期:星期四,8月15日2019 07:30:28格林尼治标准时间过期:星期四,8月15日2019 07:30:28格林尼治标准时间缓存控制:私有,最大年龄=0 X-Content-Type-Options: nosnff X-Frame-Options: SAMEORIGIN X-XSS-Prot: 1;模式=块服务器: GSE接受范围:无变化:接受编码

共有1个答案

慕弘义
2023-03-14

403错误是由于请求服务器阻止了出站https连接。服务器设置中允许https连接时。错误消失了。

使用下面的代码代替可达性库。

function isValid() {try {

    $url = 'https://www.google.com/recaptcha/api/siteverify';
    $data = ['secret'   => 'YOUR SECRET KEY',
             'response' => $_POST['g-recaptcha-response'],
             'remoteip' => $_SERVER['REMOTE_ADDR']];

    $options = [
        'http' => [
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data) 
        ]
    ];

    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    return json_decode($result)->success;
}
catch (Exception $e) {
    echo "Exception";
    return null;
}

}

 类似资料:
  • 问题内容: 每当我尝试从数据库中获取用户信息时,都会收到-error 消息。关于下面的代码,每当我尝试通过按Ajax测试按钮尝试请求时,它都无法运行并给我发出警报,但是在控制台中也给我一个-error。我不确定是否与Spring安全性有关? 用户JSP页面: 用户控制器类: 问题答案: 它通常是由Spring默认的CSRF保护引起的。 例如,如果你使用JS代码中的DELETE HTTP请求,则还需

  • 问题内容: 我试图通过从slide_images文件夹中获取所有图像名称并将其附加到来动态地动态显示滑块图像。 问题答案: 最后,我通过使用json解决了这个问题。 首先,我创建getimages.php文件并读取该文件中的目录,并获取所有图像名称并将该名称存储在数组中。 getimages.php 从要动态加载图像的页面调用getimages.php。 index.php 这对我来说是完美的。

  • 对localhost的Ajax请求返回403错误。然而,当我更改controller requestMethod以获取并在浏览器上打开请求“url”时,它会显示从服务器返回的json数据。我希望使用这些数据填充一个下拉列表。请帮帮我。我正在使用spring security 4.0和spring MVC框架。CSRF未禁用。此外,该url在Spring得到保护。 我在这里查看了相关问题,但没有找到

  • 我正在开发jsp-springstart应用程序,我已经使用azure实现了sso,它正像预期的那样工作。我已经配置好了 我还在应用程序中添加了重定向url。属性,我没有添加任何配置类,除了这些更改,我能够成功登录,而且ajax GET调用正在返回200个响应代码,但是对于POST调用,将给出403个禁止的错误 获取通话样本 还有邮电 我不知道为什么电话留言不起作用

  • 每次尝试从数据库中获取用户信息时,我都会收到一个错误。关于我下面的代码,每次我按下Ajax测试按钮尝试请求时,它都无法运行并向我发出警报,但控制台中也会向我发出403禁止的错误。我不确定这是否与Spring security有关? 用户JSP页面: 用户控制器类:

  • 我试图从https://www.ecfr.gov/cgi-bin/ecfr?page=browse使用python中的请求模块获取数据 我还要求使用用户代理和头信息中的所有参数(我在开发人员工具中看到)。 我已经尝试使用免费代理/旋转用户头/cookie和我能得到的一切。但不知何故,网站能够知道我没有使用标题。 在html回应中--我看到那个网站要求完成验证码。 我能跳过吗?