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(nextline, "http://www.frogs.com", strlen(nextline)) == 0)

== 0 表示匹配。如果不匹配,则结果小于或大于 0。以上行取决于下一行的字符串长度 >= "http://www.frogs.com" 的字符串长度。

“顺便说一句,性能是我需要考虑的一个非常重要的因素。”

C具有裸机性能=“光速”。编写低性能的 C 代码需要大量的技能,同时还要具备足够高的能力水平来编写可以在没有警告的情况下编译并且不会崩溃的 C 代码。

于 2013-01-24T04:06:30.417 回答