Javascript 事件源';s响应的MIME类型(“text/html”)不是;文本/事件流;。正在中止连接。标题设置为文本/事件流

Javascript 事件源';s响应的MIME类型(“text/html”)不是;文本/事件流;。正在中止连接。标题设置为文本/事件流,javascript,php,server-sent-events,Javascript,Php,Server Sent Events,嗨,我使用sse在我的控制台中得到这个错误 EventSource的响应具有不是“文本/事件流”的MIME类型(“文本/html”)。正在中止连接 js代码是: if (typeof(EventSource) !== "undefined") { var source = new EventSource("../api/updateWellData.php?uid=<?php echo $node_id ?>"); source.onmessage = functi

嗨,我使用sse在我的控制台中得到这个错误

EventSource的响应具有不是“文本/事件流”的MIME类型(“文本/html”)。正在中止连接

js代码是:

if (typeof(EventSource) !== "undefined") 
{
    var source = new EventSource("../api/updateWellData.php?uid=<?php echo $node_id ?>");
    source.onmessage = function(event) {
        var response = JSON.parse(event.data);
        document.getElementById("result").innerHTML = response.test;
        // some code like the above line
    };
}  
else 
{
    // refresh the page every 30 secs
} 

这是我第一次使用sse,我使用了以下文档:|

我遇到了相同的问题,问题是php文件中出现语法错误,显示了错误消息。

当php代码以错误格式输出文本时,会发生此错误。 这可能是一条PHP错误消息(所有这些消息都作为原始HTML输出),也可能是页面上不适合的其他文本

如果PHP文件的输出与
text/event stream
所需的格式不匹配,它将返回使用
text/html
。Javascript要求事件流使用
文本/事件流
内容类型,因此JS控制台将显示错误,但这只是实际问题的一个症状-要解决问题,需要修复PHP


在OP的例子中,问题在于他们的
echo
语句。输出到流的所有数据必须以
数据:
进行,并以换行符
\n
结束。流本身必须以另一个换行符结束,以指示后面不再有
数据:
消息

要修复错误,OP应该更改

echo json_encode($result);



OP代码的另一个问题是在数据库查询中没有针对SQL注入的保护。虽然这与当前的问题无关,但值得指出的是,应该使用预先准备好的语句。

我在laravel设置中也遇到了同样的问题。一些解决方案说删除php中的空格。但这并没有解决我的问题。按原样共享Web服务器的确切输出,包括标题和响应正文。没有我的
php
工作正常,我的
JavaScript
echo json_encode($result);
echo "data: " . json_encode($result) . "\n\n";