`

dwr安全错误

    博客分类:
  • ajax
阅读更多
http://hi.baidu.com/fququ/blog/item/586437a4979e4ff29052ee95.html
DWR 2.0 ajax 使用总结
从网上查了N多资料也没把dwr 配置成功.以下是从失败中成功总结出来的可应用的dwr2.0 使

1,dwr.xml文件:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
<allow>
   <create creator="new" javascript="BLACK_LIST">
    <param name="class" value="com.hzsoft.mcms.system.BLACK_LIST"/>
   </create>
   <create creator="new" javascript="SYS_MODEL_BASE">
    <param name="class" value="com.hzsoft.mcms.bean.SYS_MODEL_BASE"/>
   </create>
</allow>
</dwr>


2,web.xml文件添加servlet:
<servlet>
      <servlet-name>dwr-invoker</servlet-name>
      <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
      <init-param>
          <param-name>debug</param-name>
           <param-value>true</param-value>
      </init-param>
      <init-param>
    <param-name>classes</param-name>

    <param-value>java.lang.Object</param-value>
   </init-param>

<load-on-startup>100</load-on-startup>
</servlet>

<servlet-mapping>
      <servlet-name>dwr-invoker</servlet-name>
      <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
红色部分是需要注意与1.0等不同的地方

3,使用时dwr路径问题:
<script type='text/javascript' src='../dwr/interface/SYS_MODEL_BASE.js'></script>
<script type='text/javascript' src='../dwr/engine.js'></script>
<script type='text/javascript' src='../dwr/util.js'></script>
这里需要注意用的是相对于网站跟目录的使用位置

4,用winrar打开dwr.jar包还是源码包我忘记了,把commons-logging-1.0.4.jar 放到工程lib 目录下

5,别忘了添加dwr.jar 包,2.03版的是约489 k大小(偏差2k)

6,写完你的后台代码后输入 http://localhost:8080/myproject/dwr/ 看看是否有可引用的函数,有就引用成功.没有的话那说明配置还是有问题.


-----------------------------------------------------
http://darkmasky.iteye.com/blog/464669

错误描述:

org.directwebremoting.dwrp.BaseDwrpHandler - A request has been denied as a potential CSRF attack.
org.directwebremoting.dwrp.BaseCallHandler - Exception while processing batch
java.lang.SecurityException: CSRF Security Error

  at org.directwebremoting.dwrp.BaseDwrpHandler.checkNotCsrfAttack(BaseDwrpHandler.java:85)
  at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:76)
  at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
  at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process  (Http11Protocol.java:581)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  at java.lang.Thread.run(Thread.java:619)



解决办法:

修改 web.xml 中 DWR 配置信息

原:

<servlet> 
      <servlet-name>dwr-invoker</servlet-name> 
     <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class> 
     <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
  </init-param>
</servlet>



加入跨域调用配置信息(红色部分),修改为:

<servlet> 
      <servlet-name>dwr-invoker</servlet-name> 
      <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class> 
      <init-param>
             <param-name>debug</param-name>
             <param-value>true</param-value>
      </init-param>
      <init-param>
             <param-name>crossDomainSessionSecurity</param-name>
             <param-value>false</param-value>
      </init-param>
      <init-param>
            <param-name>allowScriptTagRemoting</param-name>
            <param-value>true</param-value>
      </init-param>
</servlet>

分享到:
评论

相关推荐

    DWR中文文档DWR

    - **安全机制**:DWR提供了防止XSS(跨站脚本攻击)和CSRF(跨站请求伪造)的安全机制,确保应用安全性。 2. **配置**: - **web.xml**:在Web应用的部署描述符中配置DWR的Servlet,如`dwr-servlet.xml`,设置...

    dwr1+dwr2+dwr3 jar包

    DWR1.0引入了安全特性,如白名单机制,以限制JavaScript可以访问的服务器端方法,从而避免跨站脚本攻击(XSS)。 DWR2.0: 随着AJAX技术的发展,DWR2.0进行了许多改进和增强。这个版本引入了更强大的类型安全机制,...

    dwr demo dwr简单使用

    8. **调试与优化**:DWR提供了丰富的日志功能和错误处理机制,这有助于你在开发过程中调试和优化代码。通过调整`dwr.xml`的配置,你可以控制日志的详细程度。 9. **安全考虑**:在实际项目中,使用DWR时需要注意...

    dwr.jar 以及dwr配置文件

    4. **调试设置**:通过`&lt;debug&gt;`标签,你可以开启或关闭DWR的调试模式,这在开发阶段非常有用,因为它会显示详细的错误信息。 5. **自定义行为**:DWR还允许通过`&lt;custom-configuration&gt;`标签引入自定义的行为和扩展...

    dwr3api+DWR文档.pdf

    7. **错误处理**:当服务器端或客户端出现错误时,DWR提供了一套处理机制,包括异常的捕获和返回给前端。 8. **DWR与Ajax**:DWR是如何简化AJAX开发的,如何利用DWR实现异步数据更新,以及与传统AJAX请求的区别。 ...

    DWR 教程 中文API DWR.xml配置文件说明 DWR学习笔记

    通过配置这个文件,开发者可以精细控制DWR的行为,比如设置安全策略、URL映射、错误处理等。 "DWRchinese.pdf"可能是DWR的中文版官方文档或者一个综合教程,涵盖了从入门到高级的DWR使用技巧,包括但不限于创建远程...

    DWR中文文档 (DWR 2.0)

    **8.5 安全性**:DWR内置了一些安全措施来防止常见的攻击手段,但开发者还需要根据实际情况加强安全策略。 #### 四、范例精讲 **9.1 购物车示例**:通过构建一个完整的购物车功能来展示DWR的实际应用场景。 1. **...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    - **安全设置**:讨论防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的安全措施。 - **高级特性**:包括批量调用、异步处理、回调函数、错误处理等。 - **自定义转换和验证**:如何自定义Java对象到JavaScript...

    Dwr3.0 与 Dwr2.0 区别

    无论是在架构设计、性能优化还是安全性增强等方面,DWR 3.0 都展现出了更强的能力。此外,它还提供了更为丰富的 API 和工具集,使得开发者能够更加高效地构建高质量的 AJAX 应用。对于正在考虑使用 DWR 或者计划从旧...

    DWR 视频教程 使用DWR开发AJAX For JavaEE

    7. **错误处理**:学习DWR提供的错误处理机制,如何捕获并处理客户端和服务器端的异常。 8. **集成与调试**:理解如何将DWR与其他前端框架(如jQuery或AngularJS)集成,并使用DWR的内置调试工具进行问题排查。 9....

    dwr 包的 使用入门

    Direct Web Remoting (DWR) 是一种开源的Java库,它允许Web应用程序在浏览器和服务器之间进行实时的、安全的、动态的JavaScript到Java的方法调用。DWR简化了Ajax(Asynchronous JavaScript and XML)开发,使得前端...

    dwr2.0 dwr3.0 jar包

    在这个版本中,DWR提供了一套全面的API,包括自动转换Java对象到JSON格式,以及处理安全性和并发性问题。此外,DWR 2.0支持自动刷新,这意味着当服务器端的Java类或方法发生变化时,无需重新加载页面,客户端的...

    DWR小代码小例子

    Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行实时、安全的双向通信,使得JavaScript可以直接调用Java方法,从而实现Web应用的Ajax功能。这个"TestDWR"文件很可能是DWR的一个简单...

    ajax的dwr包

    6. **错误处理**:DWR提供了友好的错误处理机制,可以在客户端捕获并显示服务器端的异常信息。 在使用DWR时,开发者首先需要在服务器端创建可远程访问的Java类和方法,然后在客户端使用DWR生成的JavaScript接口与...

    DWR2.jar + DWR.xml + DWR2.0.dtd + Web.xml

    这个JAR文件包含了许多类,如`DWRServlet`,它是DWR与HTTP请求交互的核心组件,以及各种用于转换数据类型、安全处理和错误处理的工具类。开发者在项目中引入这个JAR文件,就能利用DWR提供的功能,创建远程方法调用,...

    dwr学习教程3

    3. **错误处理**:DWR提供了错误处理机制,可以在客户端捕获和处理服务器端的异常。 4. **集成其他技术**:DWR可与Spring、Struts等框架无缝集成,提升开发效率。 通过【DWR视频教程3】,你将系统学习到如何配置...

    dwr+spring实例

    当服务器端发生错误时,DWR可以将异常信息转换为JavaScript错误对象,使得客户端能够捕获并处理这些异常。这对于提供良好的用户体验至关重要。 综上所述,"DWRSpring实例"是一个很好的学习资源,可以帮助我们理解...

    dwr相关jar包

    3. **安全机制**:DWR提供了一套安全机制,如CORS(跨源资源共享)支持、同源策略以及可配置的白名单,以限制哪些域名可以访问服务器资源,确保通信安全。 4. **批处理和缓存**:DWR支持批处理多个远程调用,以减少...

    DWR3.0 jar包API文档

    - **安全配置**:必须正确配置DWR的安全设置,以保护应用免受潜在攻击,例如设置白名单限制可访问的Java类和方法。 - **调试与日志**:DWR提供了调试工具和日志记录功能,帮助开发者在开发过程中定位问题。 - **...

Global site tag (gtag.js) - Google Analytics