DWR 跨域请求

DWR 跨域请求
1、实现DWR跨域支持

a.配置web.xml文件,dwr定义时加入以下参数设置:
< init-param >
  
< param-name > allowGetForSafariButMakeForgeryEasier </ 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 >

b.客户端调用:
//客户端调用时,须指定调用路径,否则默认调用的是当前页面所在服务端的/dwr,而不是实际的/dwr服务。
//故未设置Remote._path时,很可能提示你"
dwr/call/plaincall/XXX.ZZZ.dwr "的信息。
//Remote 为dwr.xml中定义的java类对应的jascript名称
Remote._path 
=  'http: // otherdomain.com/webapp/dwr';
//或:dwr.engine._defaultPath = 'http://
otherdomain.com /webapp/dwr';
Remote.someFunction();

更详细的说明可参见官网 Remoting Options 章节(http://getahead.org/dwr/browser/engine/options)。

2、DWR的Session支持

DWR通过 WebContext / WebContextFactory 来取得 HttpServletRequestHttpServletResponse、 HttpSessionServletContext、 ServletConfig等对象。(DWR2.0)实现可参见DWR内部脚本,engine.js文件" dwr.engine._getJSessionId"部份代码。

更多详细信息见官网API:http://getahead.org/dwr/server/javaapi。

所以SESSION根据jsessionid来确定的,jsessionid存放在cookie中,若客户端禁止cookie的话,jsessionid每次都新生成,所以无法确保在服务端的SESSION唯一。跨域调用DWR时,浏览器默认禁止第三方cookie,所以会有正常使用SESSION功能。设置Internet选项,"隐私","高级",开始对第三方cookie的支持,即可解决这个问题。

你可能感兴趣的:(DWR 跨域请求)