我正在使用Html5 Server Sent Events.服务器端是Java Servlet.我有一个想要传递给服务器的json数组数据.
var source = new EventSource("../GetPointVal?id=100&jsondata=" + JSON.stringify(data));
如果数组大小很小,服务器端可以获取查询字符串.但是如果阵列大小很大.(可能超过数千个字符),服务器无法获取查询字符串.是否可以使用POST方法new EventSource(...)
将json数组传递给服务器,以避免查询字符串长度限制?
不,SSE标准不允许POST.
(没有任何技术原因,据我所知 - 我认为只是设计师从未看过用例:它不仅仅是大数据,而且如果你想做一个自定义认证方案,那么安全原因不要将密码放在GET数据中.)
XMLHttpRequest
(即AJAX)确实允许POST,因此一个选项是返回旧的long-poll/comet方法.(我的书,带有HTML5 SSE的数据推送应用程序详细介绍了如何执行此操作.)
另一种方法是POST
事先将所有数据存储在一个中HttpSession
,然后调用SSE进程,该进程可以利用该会话数据.(SSE支持cookie,因此JSESSIONID
cookie应该可以正常工作.)
PS 标准没有明确说不能使用POST.但是,与之不同的XMLHttpRequest
是,没有参数可以指定要使用的http方法,也无法指定要发布的数据.