我有一个使用nodejs进行url重定向的服务器。我用它来进行重定向:
response.writeHead(302, {位置: url});响应.end();
这适用于像 google.com 这样的普通网址,但是当我有其他字符(例如西里尔字母)时,它会出现错误,例如,如果我执行 url = 'ru.wikipedia.org/wiki/Путин,_Владимир_Владимирович' (前面带有 https://),则会出现重定向错误。在将字符串传递给重定向之前,我是否必须以某种方式重新编码该字符串?因为当我创建 console.log(url) 时,它会显示带有西里尔字母的正确 url。
经过更多测试后,我设法看到使用 node-icu-charset-detector 加密的数据如下: ----[注意] 字符集:ISO-8859-2 ----[注意]重定向:https://ru.wikipedia.org/wiki/Путин,_Владимир_Владимирович
我在浏览器上获得的链接类似于“https://ru.wikipedia.org/wiki/%1FCB8=,%12;048%3C8@%12;048%3C8@%3E28G” '
最佳答案
您可以对 url 进行编码,因为 HTTP header 值不支持 utf-8 编码值:
response.writeHead(302, {Location: encodeURI(url)});
关于node.js - Nodejs重定向url编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315682/