HTML SSE请求正文
HTML SSE request body
当在JavaScript中使用EventSource API时,是否有任何方法可以发送请求体以及发起轮询的HTTP请求?
我需要在SSE请求时向服务器发送大量JSON,以便服务器可以计算要向客户端发送哪些事件。当我不需要它的时候,做web-sockets似乎很愚蠢,或者用cookie或多个请求做奇怪的事情。
我担心如果我将数据捆绑到查询字符串中,我会遇到长度限制,这可能是可能的。
提前感谢!
初始SSE请求是一个相当普通的HTTP GET请求,因此:
- 考虑到SSE仅被现代浏览器支持,最大URL长度不应该被假设为"旧浏览器"的旧255字节。大多数现代浏览器都允许更长的url, IE提供的最低上限约为2k。(假定IE不支持EventSource,但有一个XHR polyfill…)但是,如果大blob指的是几千字节,那么URL就不可靠。代理也可能导致潜在的问题。
看:不同浏览器中URL的最大长度是多少?,在android的WebView中,url的长度有限制吗?loadUrl功能?,http://www.benzado.com/blog/post/28/iphone-openurl-limit
-
您还可以将信息存储在一个或多个cookie中,这些cookie将与GET请求一起发送。这可能包括您在请求使用SSE的页面时设置的cookie,或者您在javascript中设置的cookie(在创建
EventSource
对象之前)。cookie的最大大小被指定为至少4096字节(这是整个cookie,因此对于您的实际数据部分来说稍微少一些),每个主机名至少支持20个cookie。经验测试似乎证实了这一点:http://browsercookielimits.x64.me/在最坏的情况下,您可能会将信息分成多个cookie -
大于这个值,我认为你需要一个初始请求来上传JSON并返回一个由SSE请求引用的ID。
-
在技术上是可能的,但(强烈)不建议发送带有GET请求的body。参见HTTP GET与请求体。EventSource构造函数只接受一个URL,所以不直接支持。
-
正如dandavis指出的,你可以压缩你的JSON。
- 使用 postman.setNextRequest() 在发送之前填充请求正文
- IE9 XMLHTTPRequest请求正文不完整,但readyState=4 statuscode=200
- “发送后无法设置标头”和空发布请求正文
- Angular 中的 HTTP 服务将 POST 数据作为请求正文的键发送,没有值
- 带有正文的Amplifyjs GET请求
- 如何迭代请求正文中的对象数组
- 从chrome扩展拦截HTTP请求正文
- 如何在请求正文中传递变量
- http模块(node.js和browserfy的)没有't使用方法PATCH写入请求正文
- 具有分块请求正文的XmlHttpRequest
- 节点.js请求对象 - 返回响应正文以供进一步操作
- Phonegap文件上传:空请求正文和文件
- 在触发特定 POST 请求时修改 HTTP POST 请求正文(post 参数)
- 快递.js请求正文__proto__
- 如何从 Nodejs 中的 post 请求中获取正文
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- 将数据从 d3 CSV 分析请求获取回代码正文
- 是否可以强制用户的浏览器发出(并遵循)正文中包含 JSON 的 GET 请求
- 将 POST 请求中的图像作为正文附加到 golang 服务器
- 如何使用 jQuery $.ajax() 时使用 GET 在请求正文中发送数据