EventSource 的响应的 MIME 类型 ("application/x-httpd-php") 不是 "text/event-stream"。中止连接

EventSource's response has a MIME type ("application/x-httpd-php") that is not "text/event-stream". Aborting the connection

我正在尝试使用 EventSource 并且我正在使用此代码:

var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";

这是我的 php:

<?php
header("Content-Type: text/event-stream");
header('Cache-Control: no-cache');

$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>

以上代码在 w3school 的 link 中给出。 但是我得到了这个错误:EventSource 的响应有一个 MIME 类型 ("application/x-httpd-php") 而不是 "text/event-stream"。正在中止连接。

有人知道为什么吗?我从 w3school 复制了所有内容。我找不到错误是什么?

这意味着 PHP 首先发送默认的 MIME 类型 header。

我的第一个猜测是在打开 <?php 之前,您的 php 脚本文件中有一些空格(或不可见字符,如 utf8 BOM)。 (参见 http://php.net/manual/en/function.header.php

或者它可能正在发回一条错误信息?我建议从命令行使用 curl 来调试它。 (请参阅 https://whosebug.com/a/49486869/841830)或者,使用浏览器中的 Web 开发人员工具来准确查看发回的内容。