最近在学dwr.  我仿照官方提供的demo做的一个简单的功能.在一个页面中提供一个文本输入框,  文本传入后台简单处理后,将其推回给当前页面,并在页面中显示。  官方的例子就是那个java-chat.  我基本是照搬官方的例子了,web.ml和dwr.xml的设置也是,但还是不行.  我的工程和官方的demo都发布在同一个tomcat6.0,运行我的应用有时会  报java.lang.SecurityException: CSRF Security Error 异常,官方demo则不会.  另外,官方的demo中的例子能够把消息推到不同浏览器的相同页面中显示,  即这个浏览器中的页面输入信息,那么当前页面和另一个浏览器中  的这个页面都会显示输入信息。  而我的则不行,只能把消息推到当前浏览器中的这个页面,如果打开  另外一个浏览器访问该页面,消息无法传到。  请问是什么方面的原因?

解决方案 »

  1.   

    解决办法:修改 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>