“无法在'XMLHttpRequest'上执行'setRequestHeader':值不是有效的ByteString”错误

时间:2019-11-13 07:54:32

标签: ajax unicode

我正在发送AJAX请求,例如:

 $.ajax({
            type: 'POST',
            async: true,
            crossDomain: true,
            url: 'http://localhost:1234/api/file/upload',
            data: formData,
            processData: false, 
            contentType: false, 
            headers: {
                "FileName": filename
            },
            success: function (data, textStatus, jqXHR) {}
});

filename不是用英语(某些其他语言)书写时,出现此错误:

  

错误扫描fileTypeError:无法对'XMLHttpRequest'执行'setRequestHeader':值不是有效的ByteString

1 个答案:

答案 0 :(得分:0)

HTTP标头field-value受限制,请参见RFC 7230 §3.2, §3.2.4

标题仍然是错误的。请改用Content-DispositionRFC 6266)。它带有参数filename*,该参数允许使用编码值(RFC 8187)。例如,对解码的文件名£ and € rates进行编码:

Content-Disposition: inline; filename*=UTF-8''%c2%a3%20and%20%e2%82%ac%20rates