Classic Asp + IIS环境下Server-Sent Events(SSE)无法正常工作
IIS 10下Classic ASP环境中Server-Sent Events(SSE)在现代浏览器失效问题
在IIS 10的Classic Asp环境中,SSE无法正常工作,这个问题仅出现在现代浏览器里——我旧IDE集成的旧版Chrome还能正常显示SSE内容。
奇怪的是服务器端和浏览器控制台都没有报错,测试了Edge、Chrome、Firefox三款浏览器,表现完全一致:服务器返回HTTP 200成功响应,但页面上没有任何内容渲染,控制台也没打印数据。在浏览器网络面板里,找不到后端text/stream内容未渲染的原因。更诡异的是,IIS确实在发送数据,因为网络面板会定期出现来自SSE.asp的200状态响应,但看不到流式数据,也不会渲染或打印到控制台:

最简演示代码
SSE.html
<!DOCTYPE html> <html> <head> <script> if(typeof(EventSource) !== "undefined") { var source = new EventSource("SSE.asp"); source.onmessage = function(event) { console.log(event.data) document.getElementById("result").innerHTML += event.data + "<br>"; }; } else { document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events..."; } </script> </head> <body> <h1>Getting server updates</h1> <div id="result"></div> </body> </html>
SSE.asp
<% Response.Charset = "utf-8" Response.ContentType = "text/event-stream" Response.Expires = -1 Response.Write("data: The server time is: " & now()) %>
已尝试的解决方法
- 禁用浏览器缓存
- 关闭电脑防火墙
- 服务器端禁用缓存
- 在远程IIS共享主机环境测试
以上方法均无效果,有人能找出问题原因及解决方案吗?
内容的提问来源于stack exchange,提问作者M.Y.
相关产品推荐
相关产品推荐

