json - 服务器可以通过 POST 发送带有 EventSource 传递参数的事件 (SSE)

标签 json post server-sent-events eventsource

我正在使用 Html5 服务器发送的事件。服务器端是Java Servlet。
我有一个 json 数组数据要传递给服务器。

var source = new EventSource("../GetPointVal?id=100&jsondata=" + JSON.stringify(data));

如果数组大小很小,服务器端可以获取查询字符串。
但是如果数组大小很大。 (可能超过数千个字符),服务器无法获取查询字符串。
是否可以在 new EventSource(...) 中使用 POST 方法?将 json 数组传递给可以避免查询字符串长度限制的服务器?

最佳答案

不,SSE 标准不允许 POST。

(没有技术原因,据我所知 - 我认为这只是设计人员从未见过用例:它不仅仅是大数据,但如果您想进行自定义身份验证方案,则有出于安全原因,不要将密码放入 GET 数据中。)
XMLHttpRequest (即 AJAX)确实允许 POST,所以一种选择是回到旧的 long-poll/comet 方法。 (我的书 Data Push Apps with HTML5 SSE 详细介绍了如何做到这一点。)

另一种方法是POST预先将所有数据存储在 HttpSession 中,然后调用可以使用该 session 数据的 SSE 进程。 (SSE 确实支持 cookie,所以 JSESSIONID cookie 应该可以正常工作。)

附言standard没有明确说不能使用 POST。但是,不像 XMLHttpRequest ,没有参数指定要使用的http方法,也没有办法指定要发布的数据。

关于json - 服务器可以通过 POST 发送带有 EventSource 传递参数的事件 (SSE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34261928/

相关文章:

jQuery 通过 JSON 自动完成来自 ASMX 的名称/值对

python - 如何在Python中转换requests.models.Response对象中的dict对象?

php - 使用服务器发送的事件发布到 PHP?

apache - HTML5 服务器发送事件原型(prototype)制作 - 模棱两可的错误和重复轮询?

javascript - Node 服务器响应错误 : process. nextTick(function(){throw err;});

c# - Newtonsoft JSON - 数组未正确序列化

javascript - Python POST 请求失败

javascript - 将 js 数组发布到 php @jquery @codeigniter

javascript - GET 和 POST 的奇怪行为

kotlin - Ktor sse 客户端断开连接