spring-boot-recaptcha配置

2ul0zpep  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(369)

我正在SpringBoot上开发一个应用程序,但是为了安全起见,我需要在各种表单上集成recaptcha,但是连接总是导致连接超时,我用postman验证了api和url,它通过并返回一个答案,但是在java代码时间用完时,我得到了错误 java.net.ConnectException: Connection timed out: connect 我不知道我做错了什么,我使用了“javaokhttp”上提供的postman代码。代码是下一个。

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
.url("https://www.google.com/recaptcha/api/siteverify?secret=XX&response=XXX")
.get()
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "f47548e1-a9e0-9065-7f76-dced294bddcb")
.build();

Response response = client.newCall(request).execute();

但是我似乎不知道哪里出错了,有人能帮我吗?

e4eetjau

e4eetjau1#

你有一个 Connection timed out 错误,所以我们可以说:
因为这不是一个 Unknown host 错误,您必须有一个dns,它为您提供ipv4或ipv6地址www.google.com
因为这不是一个 destination unreachable 错误,您有到网关的路由,而此网关是具有默认路由的本地路由器。
因此,的超时 connect 意味着您已将一个tcp syn数据包发送到某个目的地,并且该数据包已被丢弃在您的本地网络或您的网络与internet之间的接口的某个防火墙中(因为您没有收到任何icmp/icmpv6数据包表明有问题-标准路由器应该向您发送这样的信息)。
问题在于第一个数据包(tcpsyn),因此您的问题不能与您的 addHeader() 调用源代码。在您的情况下,这些头文件永远不会发送,并且会出现此错误。
自www.google.fr 有ipv4和ipv6地址,有两种可能:
或者您有一个本地ipv6路由器发送ra广告,但没有使用ipv6连接到internet。尝试以下方法检查此案例:
替换:

https://www.google.com/recaptcha/api/siteverify?secret=XX&response=XXX

签署人:

https://[2a00:1450:400c:c04::6a]/recaptcha/api/siteverify?secret=XX&response=XXX

如果你继续得到 timeout ,这意味着您的ipv6路由器配置不正确。
或者你有防火墙,需要使用代理
替换:

https://www.google.com/recaptcha/api/siteverify?secret=XX&response=XXX

签署人:

https://74.125.206.104/recaptcha/api/siteverify?secret=XX&response=XXX

如果你继续得到一个超时,这意味着你有一个防火墙,应该使用一个代理。

相关问题