expressjs:获取请求的URL

bod*_*ser 9 javascript node.js express

我想从请求中获取客户端请求的URL.

目前我使用:

var requestedUrl = req.protocol + '://' + req.host + ':3000' + req.url;
Run Code Online (Sandbox Code Playgroud)

这根本不是很好.它还遗漏了我需要的url片段(#/ something).

有没有办法可以获得完整的网址?也许在标题之外?

问候

Rao*_*oul 18

您无法在服务器上获取URL的片段(散列部分),它不会被浏览器传输.

片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端的,没有服务器的参与 - 当然,服务器通常有助于确定MIME类型,MIME类型确定片段的处理.当代理(例如Web浏览器)从Web服务器请求资源时,代理会将URI发送到服务器,但不会发送该片段.相反,代理等待服务器发送资源,然后代理根据文档类型和片段值处理资源.

来自维基百科上的片段标识符

如果你想获得完整的URL(没有fragement标识符),最好的方法是使用包含端口而不是req.host的"Host"头,但是与你当前正在做的相同:

var requestedUrl = req.protocol + '://' + req.get('Host') + req.url;
Run Code Online (Sandbox Code Playgroud)

  • 如果您在不同环境中的不同端口上运行服务器,则使用req.get('Host')将包含端口号,您无需编写逻辑来检查环境并相应地调整端口. (2认同)