You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google reCaptcha脚本完整性校验与CORS冲突问题求助

解决Google reCAPTCHA添加SRI后出现的CORS错误问题

问题核心原因

你在自己网站.htaccess里设置的Access-Control-Allow-Origin完全无效——这个响应头是用来允许其他网站访问你的资源的,而你现在是从自己网站请求Google的reCAPTCHA脚本,得Google的服务器返回允许你域名的CORS头才行,你这边设置的头根本影响不到Google的响应。

另外,给reCAPTCHA的api.js加SRI(脚本完整性校验)本身就不合理:这个脚本是Google动态生成的,每次请求的内容可能因地区、语言、版本更新等因素变化,哈希值不会固定,就算你现在凑对了哈希,过不了多久就会失效,这也是Google官方不推荐给reCAPTCHA脚本加SRI的原因。

可行解决方案

  • 放弃给reCAPTCHA脚本加SRI,用CSP严格控制来源
    这是最稳妥的方案,既然SRI不适用,就靠CSP保障安全。完善你的CSP配置,确保包含reCAPTCHA所需的域名:

    Header always set Content-Security-Policy "script-src 'self' https://www.google.com https://www.gstatic.com; style-src 'self' https://www.google.com; frame-src https://www.google.com;"
    

    这样既限制了脚本只能从可信来源加载,又避免了SRI带来的问题。

  • 不要自行托管reCAPTCHA脚本
    别想着下载api.js放到自己服务器再加SRI,一来Google会自动更新脚本,你托管的版本很快就过时;二来可能违反reCAPTCHA的服务条款,得不偿失。

  • 无需纠结crossorigin属性
    就算你调整crossorigin的写法,也解决不了问题——Google的服务器不会为单个域名配置允许跨域的响应头,这条路走不通。

总结

不需要放弃安全性,只是SRI不适合reCAPTCHA这种动态生成的第三方脚本。用严格的CSP配置替代SRI的保护作用,既能保证安全,又能让reCAPTCHA正常运行。

内容的提问来源于stack exchange,提问作者Dainiasas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:30:46