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

XMLHttpRequest误报文件存在(返回状态200)问题求助

为什么不存在的MP3文件返回HTTP 200状态码?

我开发了一款浏览器日记程序,计划在特定日期播放当日的Song-of-the-Day(mp3)文件,因此需要检查对应文件是否存在。目前仅存在1月1日对应的0101.mp3文件,仅该日期应显示歌曲可用图标。

初始检测代码

我通过XMLHttpRequest发送HEAD请求检测文件:

function check4Sotd(month, day) {
    var sotd = 'mydocs/sotd/' + pad(month) + pad(day) + '.mp3'; // pad puts leading zeroes, thus file for 1 Jan. will be 0101.mp3
    var sotdexists = false;         // assume there is no Song-of-the-Day file
    const myReq = new XMLHttpRequest();  
    myReq.open('HEAD', sotd, false);   
    myReq.send();  
    console.log(sotd + " --- " + myReq.status);
    if (myReq.status == 200) {      // then the mp3 file exists
        sotdexists = true;
    }
    /*  Some other stuff  */
    if(sotdexists) {
        $("#sotdIcon").show();      // show Song-of-the-Day icon
    }
};

异常控制台输出

控制台显示多个不存在的文件也返回状态200(仅0101.mp3应返回200):

mydocs/sotd/0113.mp3 --- 404
mydocs/sotd/0112.mp3 --- 404
mydocs/sotd/0111.mp3 --- 200
mydocs/sotd/0110.mp3 --- 200
mydocs/sotd/0109.mp3 --- 200
mydocs/sotd/0108.mp3 --- 200
mydocs/sotd/0101.mp3 --- 200
mydocs/sotd/1231.mp3 --- 404
mydocs/sotd/1230.mp3 --- 404
mydocs/sotd/1201.mp3 --- 404
mydocs/sotd/0201.mp3 --- 200
mydocs/sotd/0202.mp3 --- 404
mydocs/sotd/0102.mp3 --- 200
mydocs/sotd/0131.mp3 --- 200
mydocs/sotd/0121.mp3 --- 200
mydocs/sotd/0120.mp3 --- 404

修改后的代码

我尝试修改文件名后问题依旧,随后调整代码为监听onreadystatechange:

const myReq = new XMLHttpRequest();  
myReq.onreadystatechange = function() {
    console.log(sotd + " -- " + this.readyState + " -- " + this.status);
    if (this.readyState == 4 && this.status == 200) {
        sotdexists = true;
    }
};
myReq.open('HEAD', sotd, false);   
myReq.send(); 

修改后的控制台输出

但日志仍显示不存在的文件返回状态200:

mydocs/sotd/0113.mp3 -- 1 -- 0
mydocs/sotd/0113.mp3 -- 4 -- 404
mydocs/sotd/0112.mp3 -- 1 -- 0
mydocs/sotd/0112.mp3 -- 4 -- 404
mydocs/sotd/0111.mp3 -- 1 -- 0
mydocs/sotd/0111.mp3 -- 4 -- 200
mydocs/sotd/0110.mp3 -- 1 -- 0
mydocs/sotd/0110.mp3 -- 4 -- 200
mydocs/sotd/0109.mp3 -- 1 -- 0
mydocs/sotd/0109.mp3 -- 4 -- 200
mydocs/sotd/0101.mp3 -- 1 -- 0
mydocs/sotd/0101.mp3 -- 4 -- 200
mydocs/sotd/0129.mp3 -- 1 -- 0
mydocs/sotd/0129.mp3 -- 4 -- 404

仅0101.mp3实际存在,为何其他不存在的文件也返回状态200?


内容的提问来源于stack exchange,提问作者R.E. Tired

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:05:24