gpt4 book ai didi

javascript - 修改req.url不会更新url参数(req.query)

转载 作者:行者123 更新时间:2023-12-03 07:20:40 26 4
gpt4 key购买 nike

因为 Google Sitemap 不允许在其 XML 中使用 &。我已经转义了包含两个参数的网址(如“/path?a=123&b=hello”),现在变为 /path?a=123%26b=hello 和我以为浏览器会自动将 url 转义回来。但事实并非如此。 Google 机器人给出了错误。

因此,在调用上述路由之前,我在堆栈顶部添加了一个中间件函数。

app.use(function (req, res, next) {
debug(req.url);
req.url = unescape(req.url);
debug(req.url);
// This works as expected
next();
});

但是当我执行 req.query.areq.query.b 时(Google 机器人正在使用转义的 URL 进行访问,即 /path?a =123%26b=hello),它给出原始值,即 req.query.a 给出 123%26b=helloreq.query.b 给出未定义 当我检查 req.url 时,它给出了正确的未转义 URL。

你有什么建议?

更新:

我能想到的一个快速解决方案是(我没有尝试过,但我认为它会起作用)

// After unescaping req.url
// test.com/path?a=123&b=hello
var query = req.url.split('?')[1].split('&');
var a = query[0].split('=')[1];
var b = query[1].split('=')[1];

// It looks very dirty

最佳答案

在 XML 中,您应该将 & 转义为 &:

/path?a=123&b=hello

%26 用于值内的 & 符号,正如您已经发现的那样。

关于javascript - 修改req.url不会更新url参数(req.query),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36234602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com