You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用EventSource触发MIME类型错误,请求排查问题原因

问题排查与解决

以下是几个可能导致该问题的原因及对应解决办法:

  • 文件名拼写不一致
    你的PHP文件名是sse-test.php,但前端EventSource调用的是sse_test.php(中横线与下划线的区别)。fetch请求的是正确的/sse-test.php,所以能拿到正确响应头,但EventSource请求的是错误文件,服务器返回404页面(MIME类型为text/html),从而触发报错。
    解决:将EventSource的路径改为sse-test.php,保持与文件名一致。

  • PHP文件存在前置空白或BOM头
    如果sse-test.php的<?php标签之前有空格、换行,或者文件带有UTF-8 BOM头,服务器会先输出这些空白字符,浏览器会将响应识别为text/html,即便后续设置了正确的Content-Type也无效。
    解决:打开PHP文件,删除<?php之前的所有字符,保存为无BOM的UTF-8格式。

  • PHP输出缓冲未关闭
    若PHP的output_buffering配置处于开启状态,flush()无法立即输出内容,导致响应未按预期发送,服务器可能默认添加text/html的Content-Type。
    解决:在PHP代码开头添加ob_end_clean();关闭输出缓冲:

    <?php
    ob_end_clean();
    header("Content-type: text/event-stream");
    header("Cache-Control: no-store");
    
    $time = date('r');
    echo "data: The server time is: {$time}
    
    ";
    flush();
    ?>
    
  • 服务器配置覆盖了Content-Type
    部分服务器(如Apache/Nginx)的默认配置可能强制为.php文件设置text/html的Content-Type,覆盖PHP脚本设置的header。
    解决:检查服务器配置,确保允许PHP脚本自行设置Content-Type。比如在Apache的.htaccess中添加:

    <FilesMatch "\.php$">
        Header unset Content-Type
    </FilesMatch>
    

    或在Nginx配置中移除强制设置Content-Type的相关指令。

内容的提问来源于stack exchange,提问作者Alex P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:20:14