虽然DWR是个很早就出现的Ajax框架,但一直都没去使用过,今天正好没事就看了一下并参照文档照做了个demo,
在其中碰到一个问题:
后台打印出错误信息:“严重: A request has been denied as a potential CSRF attack.” 在网上google一把
之后,出现此错误的原因大都是说“请求被拒绝,可能存在csrf(cross-site request forgeries,跨站请求伪造)攻击、
页面URL可能被跨站了的服务所调用之类的”,但是我这里只有一个简单的测试页面,是根本不存在什么所谓的跨站请求的,
但不知道为什么?希望有知道的朋友告诉一下我,万谢!
不过最后还是通过网上搜索给解决了,得到以下两种解决方案:
1、在web.xml配置文件中修改dwr的配置:
Xml代码
1.<servlet>
2. <servlet-name>dwr-invoker</servlet-name>
3. <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
4. <init-param>
5. <param-name>debug</param-name>
6. <param-value>true</param-value>
7. </init-param>
8. <!-- 新加corssDomainSessionSecurity参数 -->
9. <init-param>
10. <param-name>crossDomainSessionSecurity</param-name>
11. <param-value>false</param-value>
12. </init-param>
13. </servlet>
据说参数corssDomainSessionSecurity是在dwr版本2.0才有的.默认值为true,也就是禁止其他域发送请求.若设置成false后,就能够从其他域进行请求但这样做会在安全性上有一些冒险.
2、将JSP文件中所引用的js文件engine.js的方式,由<script type="text/javascript" src="js/engine.js"></script> 更改成:<script type="text/javascript" src="dwr/engine.js"></script>。不知道为什么这样就可以啦,而
引用js目录下就会报错。希望有知道朋友,不吝赐教,在下感激不尽!
分享到:
相关推荐
JavaWeb项目打开网页出现Session Error的异常解决方案 本文主要介绍了JavaWeb项目打开网页出现Session Error的异常解决方案,通过示例代码对解决方案进行了详细的介绍,对大家的学习或者工作具有一定的参考学习价值...
5. **安全与优化**:为了防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF),DWR提供了安全机制,如设置session ID和跨域限制。同时,通过缓存和批处理等优化手段,可以提高性能。 6. **DWR Demo**:`dwrdemo`可能是...
6. **Error Handling**:正确处理错误是任何应用的关键,DWR也不例外。开发者需要配置合适的错误处理器,以优雅地处理可能出现的问题。 7. **Integration with Frameworks**:DWR可以与其他前端框架如jQuery、...
“scope参数允许你配置creator的生命周期,共有以下几个选项:application,session,request,page.这些参数对于用过jsp或servlet的开发人员并不陌生. 3.1 Uing static methods 如果你想远程调用一个creator的静态方法,...
6. **Security and Session Handling**: DWR提供了一套安全机制,包括基于会话的认证和权限控制,确保只有合法用户能订阅和接收推送消息。 7. **Error Handling**: 在实现推送时,错误处理非常重要。DWR提供了错误...
通过`<errorHandler>`标签,你可以自定义DWR遇到错误时的行为,比如返回错误信息,或者记录日志。 6. **预加载和缓存:** DWR支持预加载Java对象和方法定义,提高页面加载速度。`<preload>`和`<cache>`标签可以...
这些Servlet会生成随机验证码并将其存储在session中,用户输入验证后,服务器会检查输入是否与session中的验证码匹配。 数据库方面,项目可能包含了用于存储数据的表结构和相关的SQL查询。数据库设计应当根据业务...
这些方法将利用Hibernate的Session接口执行相应的操作。 然后,创建一个服务层(Service层),这个层将调用DAO层的方法,并可能包含一些业务逻辑。服务层的接口可以命名为`UserService`,其实现类为`...
8. **Error Handling**:DWR提供了一套错误处理机制,包括在JavaScript中处理服务器端抛出的异常。 这个基础教程可能涵盖了如何设置DWR环境、创建Callee对象、配置DWR引擎、在HTML页面中引入Caller库、调用Java方法...
17. **LOG4J错误等级**:LOG4J定义了不同级别的日志记录,如OFF(关闭所有日志),FATAL(严重错误),ERROR,WARN,INFO(常规信息),DEBUG(调试信息)和ALL(记录所有信息)。DEBUG级别用于调试,INFO级别记录...
<forward name="error" path="/jsp/error.jsp"/> ``` #### 在Spring配置文件中进行和Struts的集成 **表格6**: Spring配置文件中进行action的设置(必需设置) ```xml <!-- 可以在这里注入依赖 --> ``` ##...
如何配置自定义错误页面(Custom Error Pages) 配置Jetty Statistics(统计) 配置Jetty Statistics教程 配置Request Log教程 Java-monitor 故障排除 如何使用Jetty Dump Feature(特性) Webtide Blog–Jetty ...
用VS编写的FTP服务器软件,C#网络程序编程学习用。 代码: using System; using System.Collections.Generic; using System.Globalization; using System.IO;...using System.Net;... myTcpListener = new TcpListener(IP...
- **Error**:系统级错误,通常无法通过程序逻辑解决,如 `OutOfMemoryError`。 **3. sleep() 和 wait() 区别** - **sleep()**:当前线程暂停执行指定的时间,不释放锁。 - **wait()**:线程等待直到被唤醒,释放...