Javascript 节点JSURL解析
我正在尝试解析节点js中的url。从这段代码中获取空值。它正在接收路径的值。但不适用于主机或协议Javascript 节点JSURL解析,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试解析节点js中的url。从这段代码中获取空值。它正在接收路径的值。但不适用于主机或协议 var http = require('http'); var url = require('url'); http.createServer ( function (req,res){ var pathname = url.parse(req.url).pathname; var protocol = url.parse(req.url).protocol; var hos
var http = require('http');
var url = require('url');
http.createServer ( function (req,res){
var pathname = url.parse(req.url).pathname;
var protocol = url.parse(req.url).protocol;
var host = url.parse(req.url).host;
console.log("request for " + pathname + " recived.");
console.log("request for " + protocol + " recived.");
console.log("request for " + host + " recived.");
res.writeHead(200,{'Content-Type' : 'text/plain'});
res.write('Hello Client');
res.end();
}).listen(41742);
console.log('Server Running at port 41742');
console.log('Process IS :',process.pid);
不会在一个值中传递组合的URL,以供节点解析
请求http://yourdomain.com/home
,例如,到达时为:
GET/home HTTP/1.1
托管yourdomain.com
# ... (附加标题)
所以,这些碎片不会都在同一个地方
- 您可以从中获得的路径和查询字符串,正如您刚才所做的那样–对于上面的示例,它将保留
“/home”
var pathname = url.parse(req.url).pathname;
- 您可以从中获取的主机,尽管它并不总是需要值
var hostname = req.headers.host || 'your-domain.com';
- 对于协议,此值没有标准放置
您可以使用“”中给出的建议来确定
和http
之间的关系https
或者,尽管它不是标准的,但许多客户端/浏览器将为它提供var protocol = req.connection.encrypted ? 'https' : 'http';
头X-Forwarded-Proto
req.url
仅包含路径,而不包含整个url。
其余的在请求头中
- 对于主机:
console.log(请求头[“主机])代码>
- 对于协议:
console.log(请求头[“x-forwarded-proto]”)代码>
您能给我们举一个URL不起作用的例子,并让您的控制台记录req.URL吗?HTTP协议不会在一个值中传递组合URL以供节点解析。
req.url
中只给出了路径和可选查询字符串(对于GET/foo
请求,req.url==“/foo”
)。主机位于请求头中,至少在HTTP 1.1和更高版本中是这样。那么如何打印主机和协议呢?谢谢