java - 如何在 GWT 项目中添加验证码?

标签 java javascript gwt captcha

我想在对话框中添加验证码。 这是我第一次在我的项目中使用验证码

验证码小部件未加载。

我使用了 gwt-recaptcha-1.0.0.Beta2.jar 这个插件来在客户端显示它。 公钥由给定 URL example.com 生成,

我还包括如下脚本及其文件:

<script language="JavaScript" type="text/javascript"
    src="/js/jquery-1.10.2.min.js"></script>
<script language="JavaScript" type="text/javascript"
    src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript"
    src="/js/sprinkle.js"></script>

下面是错误来了

com.google.gwt.event.shared.UmbrellaException: Exception caught: Exception caught: Exception caught: (TypeError) @com.claudiushauptmann.gwt.recaptcha.client.Recaptcha::create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)([string: '6LcTueYSAAAAAHPQtHZgAULhzRiawknYecvkKokU', string: 'recaptcha_div', string: 'red', string: 'en', int: 0]): $wnd.Recaptcha is undefined

更新:

在浏览器中,当我使用 firbug 检查它时,控制台显示检索内容时出错。 firebug 控制台中显示的错误消息是:

Blocked loading mixed active content "http://api.recaptcha.net/js/recaptcha_ajax.js"

在运行项目后,我希望在我的 html 页面中出现如下代码,但没有出现。

 <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6LdeueYSAAAAAKhH5DTUxAv5415DZBgp5cuf0Rmd&ajax=1&cachestop=0.992938555511717&lang=en">

当我创建一个示例项目时,它就在那里。

更新 2 响应是:

var RecaptchaState = {'programming_error' : 'Input error: Invalid referer'};

最佳答案

您好,我知道问题出在哪里了...

第一条错误信息是:

 com.google.gwt.event.shared.UmbrellaException: Exception caught: Exception caught: 
 Exception caught: (TypeError)   
 @com.claudiushauptmann.gwt.recaptcha.client.Recaptcha::
 create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)
 ([string: '6LcTueYSAAAAAHPQtHZgAULhzRiawknYecvkKokU', string: 'recaptcha_div', 
 string: 'red', string: 'en', int: 0]): 
 $wnd.Recaptcha is undefined

这只是因为,从客户端 gwt-captcha 组件尝试调用 recaptcha_ajax.js 中的功能,但它不可用。

当我检查更多时,使用 firebug 的客户端网页显示错误消息:

阻止加载混合 Activity 内容“http://api.recaptcha.net/js/recaptcha_ajax.js”

这就是第一条错误消息的原因。

现在让我的项目阻止访问这个 js url 的是,我的项目 url 是 https://domain/index.html,所以安全的内容阻止了不安全的内容。 看到我的文本传输协议(protocol)是安全的 (https),​​但 recaptcha_ajax.js url 是不安全的 (http)。

解决方法: 因此,为了解决这个问题,我必须将不安全的 url 更改为安全的 url。

编辑gwt-captcha.jar 文件中的gwt.xml 文件。 [原创]

 <module> 
        <inherits name="com.google.gwt.user.User"/> 
        <script src="**http://**api.recaptcha.net/js/recaptcha_ajax.js"/> 
 </module>

到 [已编辑]

<module> 
        <inherits name="com.google.gwt.user.User"/> 
        <script src="**https://**api.recaptcha.net/js/recaptcha_ajax.js"/> 
</module>

谢谢。

关于java - 如何在 GWT 项目中添加验证码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18486025/

相关文章:

javascript - 我正在尝试将一个 JSP 页面以及输入文本值重定向到另一个页面

javascript - 在选择合适的 iOS Mobile Safari Web 开发工具(jQuery Mobile/Sencha Touch/等)时感到沮丧

java - 有什么方法可以自动将 Javascript 库桥接到 GWT?

java - 如何在 GWT Java 中获取当前工作目录

使用对象数组时出现 Java 空指针异常

java - 初始化值并在输入文本时检测它

javascript - 当 JS 变量等于 x 时,尝试在 HTML div 选项卡中显示某些 "storyline"

java - GWT/Mysql/Java 连接数据库

Java 设计问题 : Enforce method call sequence

java - 如何在 Android 中将字符串化数组转换为 ArrayList