0

我正在使用 Express 在基于 Node.js 的服务器上工作。

用例:用户应该能够通过使用以下 URL 进行 HTTP GET 从服务器检索他的个人内容:http://192.168.1.88:3000/content/[userID]

我已经定义了这样的路线:

app.get('/content/:userID', content.MyHandler);

在“ MyHandler ”中,我能够读取用户 ID并将适当的数据返回给用户。

问题是当“ userID ”包含井号 (#) 时,我只能得到 MyHandler 中 # 之前的内容,因此我无法找到用户。

因此,如果用户 ID为“123456”,则一切正常。但是如果用户 ID是“1234#567”,我在 MyHandler 中只得到“1234”。

MyHandler 看起来像这样:

exports.MyHandler = function(req, res){
  ...
  var pathChunk = req.url.split("/");
  // sys.puts("--> Path in chunks: " + sys.inspect(pathChunk));
  // Nothing after # sign
  var userID = pathChunk[2];  // Will be incomplete if contains #
};

有没有办法在 MyHandler 中检索完整的用户 ID值,而不管井号 (#) 是什么?

4

2 回答 2

1

浏览器不会将哈希和之后的所有内容发送到服务器。

于 2012-10-30T20:33:46.467 回答
1

您需要对用户 ID 进行 URL 编码,以将字符串编码为可以在 URL 行上传递的格式。

这在 javascript 中类似于:

var userId_encoded = encodeURIComponent(userId);
于 2012-10-30T20:45:56.017 回答