Search code examples
node.jshttprequestchinese-locale

Node Request error: The header content contains invalid characters?


Request is easy to use, however, I encountered a strange problem:

TypeError: The header content contains invalid characters

This is my code(very simple, just a GET request):

let request = require('request');
let url = "https://www.baidu.com/s?wd=整天就是背背背记记记,或者有些正,时间就这么浪费了";

request(url, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
    } else {
        console.log(error);
    }
});

when I ran the code, the error occured. I hadn't set any headers in my request.

Request doesn't support the chinese characters? I am confused, anyone advice??


Solution

  • Since you are using a GET request, your URL path and parameters are members of the request headers. You should encode the parameter values like this:

    let url = "https://www.baidu.com/s?wd=" + 
        encodeURIComponent("整天就是背背背记记记,或者有些正,时间就这么浪费了");
    

    This will create an URL containing only ASCII characters:

    https://www.baidu.com/s?wd=%E6%95%B4%E5%A4%A9%E5%B0%B1%E6%98%AF%E8%83%8C%E8%83%8C%E8%83%8C%E8%AE%B0%E8%AE%B0%E8%AE%B0%EF%BC%8C%E6%88%96%E8%80%85%E6%9C%89%E4%BA%9B%E6%AD%A3%EF%BC%8C%E6%97%B6%E9%97%B4%E5%B0%B1%E8%BF%99%E4%B9%88%E6%B5%AA%E8%B4%B9%E4%BA%86