【问题标题】:Passing query string in a GET request, express converts '+' character in query string into space. How to avoid this?在 GET 请求中传递查询字符串,express 将查询字符串中的“+”字符转换为空格。如何避免这种情况?
【发布时间】:2021-02-26 19:25:20
【问题描述】:

我在 GET 请求的查询字符串中传递某些参数让我们说 HOST?email=john**+1@gmail.com。当我尝试通过 req.query.email 在 node express 服务器中访问这些时,我得到了值“john 1@gmail.com”。 Express 正在将 '+**' 字符转换为空格字符。有没有办法可以停止这种编码?

【问题讨论】:

    标签: node.js express http get urlencode


    【解决方案1】:

    如果你想使用文字 + 符号,你需要将它的 URL 编码为 %2b,例如

    HOST?email=john**%2b1@gmail.com.
    

    这将通过 express 正确解码,例如

    req.query.email: john**+1@gmail.com.
    

    【讨论】:

    • 感谢您的回答。我可以使用 encodeURIComponent() 将 '+' 字符转换为 %2B。但是有没有办法可以在 express 级别停止将 '+' 字符解析为 ' '。我不想在客户端级别或 URL 级别执行此操作。
    • 你可以试试 require('url').parse(req.url).query。不过,这会给出整个查询字符串。
    • 是的!但随后我将不得不使用 '&' 分隔符拆分()字符串。然后再次使用'='分隔符分割()每个字符串。
    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多