代码之家  ›  专栏  ›  技术社区  ›  Nguyen Hoang Vu

eventsource的响应具有mime类型(“application/x-httpd-php”),而不是“文本/事件流”。正在中止连接

  •  2
  • Nguyen Hoang Vu  · 技术社区  · 6 年前

    我正在尝试使用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();
    ?>
    

    上面的代码在这里给出 link W3学校。 但我得到了这个错误:eventsource的响应有一个mime类型(“application/x-httpd-php”),而不是“文本/事件流”。正在中止连接。

    有人知道为什么吗?我抄袭了W3学校的所有资料。我不知道错误是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Darren Cook    6 年前

    这意味着PHP首先发送默认的mime类型头。

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

    或者它可能正在发送一条错误消息?我建议使用命令行中的curl来调试它。(参见 https://stackoverflow.com/a/49486869/841830 )或者,使用浏览器中的WebDeveloper工具来准确地插入发送回的内容。