❌ 报错内容
Uncaught TypeError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': String contains non IS0-8859-1 code point.
根据 XMLHttpRequest 规范,setRequestHeader
方法要求 header 的名称和值都必须是 ISO-8859-1 字符集中的字符。如果你尝试设置包含中文、Emoji 或其他 Unicode 字符(如 UTF-8 编码的字符),就会抛出这个 TypeError
。
🐞 解决办法
更改上传的文件名称为英文字符,不要包含中文。
📖 总结
这个错误的核心是字符编码问题。最安全、最符合标准的做法是:
Header 名称:使用标准的、仅包含 ASCII 字符的名称。
Header 值:尽量只使用 ASCII 字符。如果必须传递非 ASCII 数据,进行 URL 编码(
encodeURIComponent
),或者(更推荐)将数据移到请求体中。
通过遵循这些原则,可以避免 String contains non ISO-8859-1 code point
错误。