http 要求から絶対 URL を抽出するには、ヘッダーを解析する必要があります。私が気にするメソッドは、GET、POST、HEAD だけです。次の単純なロジック/疑似コードで、ほとんどのケースをカバーするのに十分であることを確認したいと思います。
1 url = extract the url from the first request line;
2 if (url[0] == '/') {
3 //relative url, keep reading until HOST or end of the header
4 while (nextline != "\r\n\r\n") {
5 if (nextline starts with HOST) {
6 host = extract the host value;
7 return (host+url);
8 } else {
9 continue;
10 }
11
12 }
13 return bad_req;
14 } else {
15 //absolute url, return directly, ignore HOST
16 return url;
17 }
1) 除外されたケースはありますか?
2) 2 行目だけで、相対 URL か絶対 URL かを判断できますか?
3) エンコーディングは重要ですか?
4) 他に考えられる不具合はありますか?
ところで、パフォーマンスは私が考慮する必要がある非常に重要な要素です。