![Google reCAPTCHA 无法在 Linux 系统上运行](https://linux22.com/image/636480/Google%20reCAPTCHA%20%E6%97%A0%E6%B3%95%E5%9C%A8%20Linux%20%E7%B3%BB%E7%BB%9F%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
我正在将其reCAPTCHA
与我的注册页面进行整合,除了一个奇怪的问题外,一切似乎都运行正常。
我已经在所有本地机器上测试了此代码,并且在我们的测试服务器(window)上也测试了它,一切正常。我们刚刚设置了一个 Linux 服务器(Cents OS 6.0
),并测试了我的实现,但它在 Linux 机器上不起作用。无论我是否正确填写验证码,我总是得到错误的响应。这是我的 Java 代码,我用它来调用 Google 的 reCAPTCHA API 进行验证
reCaptcha.checkAnswer(request.getRemoteAddr(), request.getParameter("challengeValue"),
request.getParameter("responseValue"));
我曾尝试调试代码,但目前没有找到任何成功的方法,我注意到的唯一区别是关于request.getRemoteAddr()
。
request.getRemoteAddr()
为 Linux 和 Windows 服务器提供不同的 IP。(使用相同的浏览器)
Windows 和 Linux 服务器都在具有相同 IP 的一台机器上运行(某种虚拟盒)
我在用recaptcha4j集成reCaptcha
API。
对我来说,问题似乎出在我不知道的 Linux 设置或配置上。我甚至和我们的 IT 人员交谈过,但他似乎也一无所知。
我已经在 Ubuntu 上测试过了,它在那台机器上运行良好,似乎 Cent OS6 存在一些配置问题
答案1
我确信您的测试服务器和生产服务器之间的区别是防火墙。
检查它是否接受输出新的向 Google 服务器发出请求,已确立的从他们。
如果你使用 iptables 来实现这个声明,有一种方法:
iptables -A INPUT -i eth0 -p tcp -s <google_ipv4_1> -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -d <google_ipv4_1> -j ACCEPT
答案2
您需要识别浏览器和操作系统,以及您所使用的任何可能相关的插件。注意任何可能影响 cookie 处理方式的因素。
您的问题是否发生在使用其他浏览器的 Linux 主机上?在其他 Linux 主机上又会怎样?
如果您的 VirtualBox 实例使用桥接网络,尽管位于同一物理主机上,它们可能使用从 DHCP 获取的不同 IP。