-
简述Dwr
DWR是一个框架,简单的说就是能够在javascript直接调用java方法,而 不必去写一大堆的javascript代码。它的实现是基于ajax的,可以实现无刷新效果。Dwr是java实现AJAX功能的框架,代码非常简单,但只能在java语言中使用。也就是说Ajax可以有三种实现方法:jquery、Dwr、和原生ajax。 -
问题描述
在访问一个service时,前端页面显示SESSION ERROR,而控制台显示2018-9-29 11:46:23 org.directwebremoting.util.CommonsLoggingOutput error 严重: A request has been denied as a potential CSRF attack.
-
解决办法
在web.xml里面添加
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
即
<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>
<!-- 加入corssDomainSessionSecurity这个配置选项..这个参数是在dwr版本2.0才有的.默认值为true,也就是
禁止其他域发送请求. corssDomainSessionSecurity:设置成false能够从其他域进行请求.注意这样做会在安全性上有一些冒险. -->
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>initApplicationScopeCreatorsAtStartup</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>500</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
问题解决