fetch(url, {method:HEAD}) 仅在文件不存在时给出 CORS 错误

fetch(url, {method:HEAD}) gives CORS error only if file doesn't exist

我需要检查服务器上是否存在文件列表。当运行这个代码

const promises = sentences.map(sentence => {
        return fetch(`https://.../${sentence.id}.mp3`, {
            method: 'HEAD',
            cache: 'no-store',
        })
    })

    const responses = await Promise.all(promises)

    const notFound = responses.filter(response => !response.ok)

并将目录中的.htaccess文件设置为

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET "

存在的文件的响应状态为 200,但对于不存在的文件,仍然存在阻止函数完成的 CORS 错误No 'Access-Control-Allow-Origin' header is present on the requested resource.

这是由于 404 “未找到 - 在此服务器上未找到请求的 URL。” 重定向?我怎样才能避免这种情况?

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET "

要在非 200 响应(即 404)上设置这些 headers,您需要使用 always 条件。例如:

Header always add Access-Control-Allow-Origin "*"
Header always add Access-Control-Allow-Methods: "GET "

参考: