Jsf 不能覆盖";“连接”;XPages和x27中的标题;HttpServletResponse

Jsf 不能覆盖";“连接”;XPages和x27中的标题;HttpServletResponse,jsf,servlets,http-headers,xmlhttprequest,xpages,Jsf,Servlets,Http Headers,Xmlhttprequest,Xpages,在我的XPages应用程序中,当从一个XPages向另一个XPages发送XMLHttpRequest时,我希望保持连接处于活动状态。因此,我将“Connection”标题设置为“保持活动状态” 在客户端,我有: xhr=new XMLHttpRequest(); xhr.setRequestHeader("Connection","keep-alive"); 在服务器端(在响应XPage的afterRenderResponse事件中),我使用: 当检查请求和响应(使用FireBug)时,结果

在我的XPages应用程序中,当从一个XPages向另一个XPages发送XMLHttpRequest时,我希望保持连接处于活动状态。因此,我将“Connection”标题设置为“保持活动状态”

在客户端,我有:

xhr=new XMLHttpRequest();
xhr.setRequestHeader("Connection","keep-alive");
在服务器端(在响应XPage的afterRenderResponse事件中),我使用:

当检查请求和响应(使用FireBug)时,结果是请求头包含“连接=保持活动状态””(如预期),但响应头包含“连接=关闭”


有人知道如何覆盖这个标题吗

解决方案:在xsp.properties文件集中
xsp.compress.mode=gzip
。这等于在Xsp属性/页面生成下设置
Compression=“GZip,设置内容长度”



解释:我的应用程序使用服务器默认压缩,即
gzip nolength
。当未设置内容长度时,XPages的响应(XspHttpServletResponse)似乎总是将“Connection”头设置为“close”。设置内容长度后,“连接”标题不再存在,默认情况下连接保持活动状态。

从未专门这样做过,但很可能XPages引擎会简单地覆盖标题。如果您希望对请求(和标题)的输出和输出进行更多的控制,请考虑在NSF中使用Servlet,如Eric McCormick所描述的:@ @ MarkLeusink:谢谢提示,但是使用XPAGE进行响应的好处是,我可以直接在后ReNeReRebug事件中使用我的所有SSJS代码。我想如果我要创建一个JavaServlet,我必须投入大量精力来运行SSJS。
response=facesContext.getExternalContext().getResponse();
response.setHeader("Connection","keep-alive");