如何区分Ajax请求和正常的Http请求?

我在我的应用程序中使用JSF框架。 我需要在Phase Listener类中的呈现响应阶段之前运行特定脚本。

运行此脚本的条件是,如果触发的请求是Ajax请求,则需要运行脚本,如果触发的请求是Http请求,则不应运行该脚本。

任何人都可以帮我区分收到的请求。?

Ajax请求通常具有X-Requested-With: XMLHttpRequest请求标头。 在JSF中,您可以通过ExternalContext#getRequestHeaderMap()获取请求标头。

 ExternalContext externalContext = facesContext.getExternalContext(); Map headers = externalContext.getRequestHeaderMap(); boolean ajax = "XMLHttpRequest".equals(headers.get("X-Requested-With")); 

Ajax请求将服务器变量X-Requested-WithXMLHttpRequest 。 您可以使用该信息来区分ajax和普通请求。

 private boolean isAjaxRequest() { PartialViewContext partialViewContext = FacesContext.getCurrentInstance().getPartialViewContext(); return null != partialViewContext && partialViewContext.isAjaxRequest(); }