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 で # の前にあるものしか取得できないため、ユーザーが誰であるかを見つけることができないことです。

したがって、userIDが「123456」であれば問題ありません。しかし、userIDが「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 で完全なuserID値を取得する方法はありますか?

4

2 に答える 2

1

URL 行で渡すことができる形式で文字列をエンコードするには、userID を URL エンコードする必要があります。

これは、javascript では次のようになります。

var userId_encoded = encodeURIComponent(userId);
于 2012-10-30T20:45:56.017 に答える
1

ブラウザは、ハッシュとその後のすべてをサーバーに送信しません。

于 2012-10-30T20:33:46.467 に答える