在java中设置cookie,在javascript中读取

时间:2014-09-29 07:03:00

标签: java javascript cookies

我正尝试类似的事情:Detect when browser receives file download

我使用Chromes Developer Tools来监控我的cookie,我的问题是我在服务器端代码中设置的cookie(在我的情况下为java)只在请求中可见。不是在我查看Chrome开发工具中的“资源”选项卡时。

我认为这可能与我的请求是通过构建隐藏表单并提交它(我使用ExtJS 4.2.2)提交的事实有关。

我在“资源”选项卡中看到的只是Tomcat的JSESSIONID cookie。

在请求完成后,有没有人可以帮我设置我可以用JavaScript读取的java中的cookie?

截图:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点但是有一种方法可以让你放弃cookie方法。除非你有一个需要它的用例,否则你应该出于安全原因将你的cookie设置为HttpOnly。

  1. 在某种Iframe中公开您的提交按钮,以便用户可以提交 该文件仍然保留在主页面上。

  2. 检测iFrame中何时发生单击并开始轮询 某些URL上的AJAX,例如“/ FileUploadStatus”。

  3. 在文件完成后,在服务器端上传设置会话 属性如

    HttpSession session = request.getSession(false); session.setAttribute("fileUploadStatus",true);

  4. 当AJAX请求命中/FileUploadStatus的servlet时,检查会话变量以查看文件上载servlet是否已将fileUploadStatus的值更改为true。如果是,则返回指示给客户端以停止轮询和更新 页面并清除服务器上的会话属性。

  5. 注意:检测iFrame中的点击是各种浏览器的毛病。您可能必须在第二次开始轮询时访问“上传页面”,然后等待。

    替代解决方案:您还可以使用新的WebSocket API形成直接连接。这种方法运行速度最快,但并非所有浏览器都支持websockets。