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 來取得
HttpServletRequest、
HttpServletResponse、HttpSession、
ServletContext、 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 閱讀(4756)
評論(3) 編輯 收藏 所屬分類:
web開發