posts - 122,  comments - 25,  trackbacks - 0
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的支持,即可解决这个问题。

posted on 2007-12-24 09:53 josson 阅读(4745) 评论(3)  编辑  收藏 所属分类: web开发


FeedBack:
# re: DWR 跨域请求[未登录]
2008-01-02 15:42 | zz
能给个例子吗zhangs_tj_cn#hotmail.com #换成@
一直没有搞定,谢谢  回复  更多评论
  
# re: DWR 跨域请求
2008-01-14 13:24 | hqman
出现 调用方法 XMLHttpRequest.open 时权限不足  回复  更多评论
  
# re: DWR 跨域请求[未登录]
2011-06-02 10:43 | null
DWR 那个版本的啊  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2011年6月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(3)

随笔分类

随笔档案

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜