修改req.url;t更新url参数(req.query)
Modifying req.url doesn't update the url parameters (req.query)
由于Google Sitemap在其XML中不允许&
。我已经转义了包含两个参数的url(如"/path?a=123&b=hello
"),现在变成了/path?a=123%26b=hello
,我认为浏览器会自动取消对url的转义。但事实并非如此。而谷歌机器人正在给出错误。
因此,在调用上述路由之前,我在堆栈顶部添加了一个中间件函数。
app.use(function (req, res, next) {
debug(req.url);
req.url = unescape(req.url);
debug(req.url);
// This works as expected
next();
});
但当我执行req.query.a
和req.query.b
时(谷歌机器人使用转义URL访问,即/path?a=123%26b=hello
),它给出了原始值,即req.query.a gives 123%26b=hello
和req.query.b gives undefined
,当我检查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
用于您已经发现的值内的&
符号。
尝试HTML5 History API
,它会起作用:
History.pushState()
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- Connect资产管理器文件与req.url不匹配
- 修改req.url;t更新url参数(req.query)
- 如何根据传入的 req.url 将 express.cookieSession 设置为路径
- 在 express 中合并 req.params 和 req.url
- 修改req.query.page查询参数,并组成新的URL字符串
- req.url.indexOf('?')在尝试使用Express路由到控制器时抛出未定义错误.路由器和护
- AngularJS通过http get req循环查找正确的url