Firefox从IAsyncEnumerable Core MVC控制器方法触发WebSocket错误

amrnrhlw  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(130)

我正在使用可取消的Javascript Fetch来检索C# Microsoft.AspNet.WebApi.Core IAsyncEnumerable Controller方法。Chrome或Edge没有错误,但Firefox会记录以下内容:-

我不知道这是否是一个W3C标准,将HTTP Fetch转换为用于流媒体的WebSocket,或者微软如何设法嵌入它的浏览器链接病毒:-(

这是纯.html而不是.cshtml或Razor页面。
有人能解释一下发生了什么吗?
下面是JS代码:-

<script type="application/javascript">

    async function doit()
    {
          const decoder = new TextDecoder();

          const abortControl = new AbortController();
          const signal = abortControl.signal;
          setTimeout(() =>
            {
                abortControl.abort();
                console.log("*ABORTED*")
            }, 2000); // Simulate a cancel after 2 secs

          const fetchOpts = {signal:signal, method:'GET', cache:"no-cache"};
          const response = await fetch("https://localhost:7196/data/yieldfamilyname?inname=made", fetchOpts);
          const reader = response.body.getReader();

          let result = await reader.read();

          while (!result.done && !signal.aborted)
          {
                var personText = decoder.decode(result.value).replace(/\[|]/g, '').replace(/^,/, '');
                var person = JSON.parse(personText);
                console.log("chunk is", person.familyName);

                try {
                    result = await reader.read();
                }
                catch (err) {
                    console.log(err.message);
                    break;
                }
          }
          reader.releaseLock();
    }

    doit()
</script>

在第一个Yield之后,将记录以下消息:-
chunk is MADE fred.html:32:14
不建议使用突变事件。使用MutationObserver代替。浏览器链接:3299:5701
工具扩展连接browserLink:50:1248
正在初始化工具服务…浏览器链接:50:1248
正在初始化工具设计图面服务浏览器链接:50:1248
正在初始化工具选择服务browserLink:50:1248
正在初始化工具标签导航服务browserLink:50:1248
正在初始化工具热键管理器服务浏览器链接:50:1248
主机扩展连接browserLink:50:1248
正在初始化主机服务…浏览器链接:50:1248
chunk is MADEBGWE fred.html:32:14
Firefox无法与位于wss://localhost:44312/ChunkIt/的服务器建立连接。2019 - 04 - 22 01:01:04
WebSocket连接失败。时间:18:15
Chunk是。……

  • Aborted* fred.html:19:14

操作已中止。fred.html:38:15

t5zmwmid

t5zmwmid1#

我找到答案了here
看起来阴险的脚本注入是如此无处不在和无处不在,以至于.NET搜索所有提供的内容,寻找一个结束体标记。我使用document.write报告错误的旧代码有一行被转换为:-

topWindow.write('<p style="color:red">' + message + "</p><script src="/_framework/aspnetcore-browser-refresh.js"></script></body></html>");

如果不是语法上无效,我可能不会知道:-(

相关问题