我正在使用可取消的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
1条答案
按热度按时间t5zmwmid1#
我找到答案了here
看起来阴险的脚本注入是如此无处不在和无处不在,以至于.NET搜索所有提供的内容,寻找一个结束体标记。我使用document.write报告错误的旧代码有一行被转换为:-
如果不是语法上无效,我可能不会知道:-(