a.配置web.xml文件,dwr定義時(shí)加入以下參數(shù)設(shè)置:
<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>
<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.客戶端調(diào)用:
//客戶端調(diào)用時(shí),須指定調(diào)用路徑,否則默認(rèn)調(diào)用的是當(dāng)前頁面所在服務(wù)端的/dwr,而不是實(shí)際的/dwr服務(wù)。
//故未設(shè)置Remote._path時(shí),很可能提示你"dwr/call/plaincall/XXX.ZZZ.dwr"的信息。
//Remote 為dwr.xml中定義的java類對(duì)應(yīng)的jascript名稱
Remote._path = 'http://otherdomain.com/webapp/dwr';
//或:dwr.engine._defaultPath = 'http://otherdomain.com/webapp/dwr';
Remote.someFunction();
//故未設(shè)置Remote._path時(shí),很可能提示你"dwr/call/plaincall/XXX.ZZZ.dwr"的信息。
//Remote 為dwr.xml中定義的java類對(duì)應(yīng)的jascript名稱
Remote._path = 'http://otherdomain.com/webapp/dwr';
//或:dwr.engine._defaultPath = 'http://otherdomain.com/webapp/dwr';
Remote.someFunction();
更詳細(xì)的說明可參見官網(wǎng) Remoting Options 章節(jié)(http://getahead.org/dwr/browser/engine/options)。
2、DWR的Session支持
DWR通過 WebContext / WebContextFactory 來取得HttpServletRequest、HttpServletResponse、HttpSession、ServletContext、 ServletConfig等對(duì)象。(DWR2.0)實(shí)現(xiàn)可參見DWR內(nèi)部腳本,engine.js文件"dwr.engine._getJSessionId"部份代碼。
更多詳細(xì)信息見官網(wǎng)API:http://getahead.org/dwr/server/javaapi。
所以SESSION根據(jù)jsessionid來確定的,jsessionid存放在cookie中,若客戶端禁止cookie的話,jsessionid每次都新生成,所以無法確保在服務(wù)端的SESSION唯一。跨域調(diào)用DWR時(shí),瀏覽器默認(rèn)禁止第三方cookie,所以會(huì)有正常使用SESSION功能。設(shè)置Internet選項(xiàng),"隱私","高級(jí)",開始對(duì)第三方cookie的支持,即可解決這個(gè)問題。