问题
接口请求的headers参数里有不符合 ISO-8859-1 标准的字符,所以导致设置接口headers
参数的setRequestHeader
方法失效,然后报错。
Failed to execute ‘
setRequestHeader
’ on ‘XMLHttpRequest
’: Stringcontains non ISO-8859-1 code point
解决方式
常见的接口请求头不符合ISO-8859-1标准的有 中文,不传中文最省心了。
遇到这种情况,一般两种解决方式,要么解决参数问题,要么给参数编码。
方式1:解决参数问题
需要加到headers的参数里的数据提前正则校验处理,如果不符合ISO-8859-1就不允许设置。
var reg = /^[A-Za-z0-9.,;'"@%#\\\/\^\?\*\^\$\+\?\{\}\(\)\[\]\>\<\=\+\-\:\!]+$/;
if(reg.test(headersValue)){
// can invoke setRequestHeader
}
方式2:对于参数进行编码
通过 encodeURIComponent 对参数进行编码,同时必须后台接收时解码,前台回显则使用 decodeURIComponent 进行解码.
var headersValue = encodeURIComponent(originValue);
// can invoke setRequestHeader