2015-09-28 70 views
0

我已经创建了一个SPA,并且我正在使用Angular来完成此操作。现在,当我需要阅读在Node.js中使用Angular创建的URL时,我遇到了一个问题。从Angular-URL中获取Node.js中的查询参数

例如:

我的网址是:

http://example.com/#/home?answer=yes 

一般来说,如果该URL会是这样的:

http://example.com/home?answer=yes 

我可以通过使用已经得到了 “答案” :

app.get("/home", function(req,res) { 
var answer = req.query.answer; 
}) 

但是因为#节点似乎无法解析url。

请帮我解决这个问题。

回答

0

#之后的url部分被称为片段部分,传统上它甚至不会发送到服务器,因为它意味着包含客户端的数据。

见维基百科上fragment identifier的细节:

代理发送的URI到服务器,但不发送该片段。相反,代理等待服务器发送的资源,然后,代理处理资源根据文档类型和片段值

这意味着,当您发送GET请求用于在这样的URL作为http://example.com/#/home?answer=yes你的例子example.com将被提取给你,并且它取决于你的客户端代码来解析#/home?answer=yes片段,这将按照惯例涉及例如呈现home路由(在SPA内),考虑到answer的给定值参数。

由于上述原因,如果要解析服务器端的/home?answer部件,请求URL应在任何#标志之前包含它们。