【问题标题】:Nodejs redirect url encodingNodejs重定向url编码
【发布时间】:2019-11-20 15:20:43
【问题描述】:

我有一个使用 nodejs 进行 url 重定向的服务器。我用它来进行重定向: response.writeHead(302, {Location: url}); response.end();

这适用于像 google.com 这样的普通网址,但是当我有其他字符(如西里尔字母)时,它会出错,例如,如果我执行 url = 'ru.wikipedia.org/wiki/Путин,_Владимир_Владимирович'(使用 https:// infront) 然后是重定向错误。在将字符串传递给重定向之前,我是否必须以某种方式重新编码字符串?因为当我创建一个 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

【问题讨论】:

    标签: node.js redirect encoding


    【解决方案1】:

    您可以对 url 进行编码,因为 HTTP 标头值不支持 utf-8 编码值:

    response.writeHead(302, {Location: encodeURI(url)});
    

    【讨论】:

    • 谢谢你是这个,但现在我必须更加小心我正在做的事情:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2013-09-30
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多