0

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) 他に考えられる不具合はありますか?

ところで、パフォーマンスは私が考慮する必要がある非常に重要な要素です。

4

1 に答える 1

0

nextline != "\r\n\r\n" <---- これは C では機能しません

while ( strcmp (nextline, "\r\n\r\n") == 0 ) を試してください

if (次の行は HOST で始まります)

if ( strncmp(次行, "http://www.frogs.com", strlen(次行)) == 0)

== 0 は一致を意味します。一致しない場合、結果は 0 未満または 0 より大きくなります。上記の行は、次の行の文字列の長さ >= "http://www.frogs.com" の文字列の長さに依存します。

「ところで、パフォーマンスは私が考慮する必要がある非常に重要な要素です。」

Cにはベアメタル性能=「光速」があります。パフォーマンスの低い C コードを作成するだけでなく、警告なしでコンパイルされてクラッシュしない C コードを作成するのに十分なレベルの能力を持つには、途方もないスキルが必要です。

于 2013-01-24T04:06:30.417 に答える