expressjs:获取请求的url
expressjs: get requested url
我想从请求中获取客户端请求的url。
目前我使用:
var requestedUrl = req.protocol + '://' + req.host + ':3000' + req.url;
这一点都不好。它还省去了我需要的url片段(#/mething)。
有没有办法我可以得到完整的网址?也许是在标题之外?
问候
您无法在服务器上获取url的片段(哈希部分),它不会通过浏览器传输。
片段标识符的功能与URI的其他部分不同:即,它的处理完全是客户端的,没有服务器的参与——当然,服务器通常有助于确定MIME类型,MIME类型决定片段的处理。当代理(如Web浏览器)从Web服务器请求资源时,代理会将URI发送到服务器,但不会发送片段。相反,代理等待服务器发送资源,然后代理根据文档类型和片段值处理资源。
从维基百科上的片段标识符
如果你想获得完整的URL(没有分段标识符),最好的方法是使用"主机"头,它包括端口而不是req.Host,但在其他方面与你目前所做的相同:
var requestedUrl = req.protocol + '://' + req.get('Host') + req.url;
我经常在我的快递应用程序中添加这样的东西:
app.use(function(req, res, next) {
req.getRoot = function() {
return req.protocol + "://" + req.get('host');
}
return next();
});
现在您有了一个函数,如果需要,可以按需调用。
恐怕这几乎是你所能做的。除非您使用https,否则您可以将协议假定为http。正如Raoul所说,在#服务器端之后,你无法获得任何东西,这是针对浏览器的
var requestedUrl = 'http://' + req.headers.host + ':3000' + req.url
这就是你要找的吗?
req._parsedUrl.pathname
你应该,如果你还没有使用:
var util = require('util'); // core module
console.log(util.inspect(req));
要调试,请查找此类数据。
相关文章:
- 有没有一种方法可以从URL跟踪请求的域
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- Angular js-尚未添加PUT请求到服务的URL
- 如何在点击提交按钮的url中发布xml格式请求
- 当jQuery ajax请求中包含#时,URL中断
- 如何在node.js中返回与URL请求相对应的XML文件
- 如何逐个执行url请求而不导致堆栈溢出?(Node.JS)
- OData:对url请求中的数字(ID)字段进行通配符(startswith)筛选
- 发送 URL 请求,无需离开页面
- 如何使用 VBS 或 BAT 脚本发送 url 请求
- 使用jQuery跟踪来自浏览器的所有传出URL请求
- Javascript中的URL请求
- 跨域URL请求
- Fusion Tables层URL请求限制(2048个字符)
- “本网站的所有者已经根据您的浏览器的签名禁止您访问”;. .在python程序中的url请求上
- 我想从我的网站发送url请求到跨服务器.我如何在php中做到这一点
- 删除节点中的URL请求
- 如何循环大量的URL请求工作
- Url请求之前发送的事件