使用jQuery在请求头中设置中文字符

Setting Chinese characters in a request header with jQuery

本文关键字:设置 中文 字符 jQuery 请求 使用      更新时间:2023-09-26

我正在制作一个jQuery post请求,其中我在header中设置了客户端提供的一些信息。调用看起来像这样:

jQuery.ajax({
    url : myURL,
    type : "POST",
    beforeSend : function(request){
        request.setRequestHeader('someInfo', clientInformation);
    },
    data : someData,
    contentType : "text/plain",
    success : successCallback,
    error : errorCallback
});

这工作得很好(大多数时候),但是如果客户端将中文字符输入到我在变量clientInformation中传递的数据中,则请求失败,消息为:SyntaxError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest':,然后是请求,然后是is not a valid HTTP header field value.

我尝试通过在请求的beforeSend部分中包含这行来设置编码,但它似乎不起作用:

request.setRequestHeader("Content-Type",
  "application/x-www-form-url-encoded; charset=utf-8");

我如何配置我的ajax请求发送中文(或其他非iso-8859-1)字符?

我也有类似的问题。错误的原因是自定义报头包含非ASCII字符。

要处理这样的字符串,必须对它们进行URL编码:

request.setRequestHeader('someInfo', encodeURIComponent(clientInformation));

或者如果你要改变Referrer,就像我的例子一样:

request.setRequestHeader("Referrer", encodeURI('http://example.com/马轶群'));