node.js - Nodejs重定向url编码

标签 node.js redirect encoding

我有一个使用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/

相关文章:

node.js - Homebrew npm 安装 : could not symlink

ruby-on-rails - 如何在Rails中获取302重定向位置? (已尝试过 HTTParty、Net/Http 和 RedirectFollower)

bash - 将标准输出重定向到正在运行的进程

php - 如何集成AJAX避免PHP CMS的页面重定向

node.js - 如何在 Sails 应用程序中禁用 CSRF?

javascript - 无法通过 npm 安装和运行 gulp

node.js - 如何在cheerio.js中获取 Node 行号?

java - 我怎样才能编码 "'“

c# - 将流编码为 UTF-8 而不是 ASCII 后无法读取流中的整数

pdf - Elasticsearch-提取PDF内容并使用base64进行编码