参见:https://blog.intropedro.com/es/tema/dwr
web.xml文件中需要配置:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<!-- Enables GET requests which are necessary for X-domain calls -->
<init-param>
<param-name>allowGetForSafariButMakeForgeryEasier</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
dwr文档中提到配置跨域需要配置:
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
我在自己本地配置了半天,发现一直跨域失败,把allowScriptTagRemoting的值改成false ,或者把这个配置删除掉之后,跨域成功了……
前端中需要引入js文件:
<script type='text/javascript' src='http://www.test.com/project/dwr/interface/demo.js'></script>
<script type='text/javascript' src='http://www.test.com/project/dwr/engine.js'></script>
之后调用接口前需要定义:
dwr.engine.setRpcType(dwr.engine.ScriptTag);
demo._path = 'http://www.test.com/project/dwr';
demo.test({
callback:function(data){
console.log(data);
}
})