DWR远程调用未设置带有值XMLHttpRequest的X-Requested-With请求标头

时间:2015-02-17 18:24:19

标签: java ajax spring dwr

我们正在使用spring dwr实现来执行ajax调用。来自dwr_provider_xml的片段看起来像......

<bean id="remoteClass"
    class="x.y.z.RemoteImpl">
    <dwr:remote javascript="AjaxSessionManager">
        <dwr:include method="testMethod" />
    </dwr:remote>
</bean>

Javascript电话:

if ( AjaxSessionManager != undefined  ) {
    AjaxSessionManager.testMethod();
}

在服务器端,我们有一些公共代码来检查这个调用是否是ajax调用并执行一些额外的步骤。

private static final String XMLHTTPREQ = "XMLHttpRequest";
public static boolean isAjaxCall(HttpServletRequest request) {
    return XMLHTTPREQ
         .equals(request.getHeader("X-Requested-With"));
}

但是这个方法永远不会返回true,当我通过Fiddler跟踪时,请求标头不会被发送。我相信jQuery,dojo和其他流行的框架默认设置这个。我们必须明确地为DWR定义一些东西吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 DWR提供了一个要传递的头文件选项,所以我的方法调用现在看起来像这样......

AjaxSessionManager.testMethod({callback:{},
headers: {'X-Requested-With':'XMLHttpRequest'}
);