2013-01-24 50 views
0

我需要解析标头以从http请求中提取绝对URL。 我只关心的方法只有GET,POST和HEAD。我想确认以下简单的逻辑/伪代码将是足以覆盖大多数情况下,C:HTTP标头解析

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)其他可能的故障?

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

+0

你可以做这个算法更常见,例如[here](https://sourceforge.net/projects/ccgilib/)是我的CGI库。 –

回答

0

nextline!= “\ r \ n \ r \ n” 个< ----这不起作用用C

尝试在(STRCMP(nextline, “\ r \ n \ r \ n”) == 0)

如果(nextline与主机开始)

如果(STRNCMP(nextline “http://www.frogs.com”,strlen的(nextline))== 0)

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

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

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

+0

谢谢指出。它只是为了伪代码。我更担心如果我遗漏了一些角落案例,例如,“奇怪的”HTTP标头,编码等等。 – wei