我使用的是Primefaces 11.0.0,我有一个下载文件组件,如下所示:
<p:commandButton
onclick="PrimeFaces.monitorDownload(startDownload, stopDownload);"
ajax="false"
icon="fa fa-download">
<p:fileDownload value="#{downloadBean.getDownloadFile(document.id)}"/>
</p:commandButton>我的应用程序运行在tomcat上,在 Nginx 后面,我们有一个安全建议来添加 HTTPOnly,将安全地添加到cookies中,因此当在Nginx上将HTTPOnly配置到cookies时,stopDownload就不会被调用。
我的Nginx配置如下:
location /myapp {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_cookie_path /myapp "/myapp; HTTPOnly; Secure";
}如何使stopDownload与HTTPOnly协同工作?
编辑:
通过将HTTPOnly设置为重要的会话cookie,我能够使其工作,如下所示:
proxy_cookie_flags ~ Secure;
proxy_cookie_flags JSESSIONID HTTPOnly Secure;这是最好的做法还是有更好的解决方案?
发布于 2022-02-27 16:31:51
这是正确的。
由于Monitor下载需要使用JavaScript访问cookie以“停止下载”,所以cookie不能仅为HTTP,这就是代码中断的原因。
您的JSESSIONID cookie绝对是正确的锁定它。在我看来,您的上述配置是正确的。
https://stackoverflow.com/questions/71247826
复制相似问题