2012-12-28 2 views
-2

나는 C++에서 간단한 웹 서버를 만들었으며 요청 헤더를 구문 분석해야합니다. 내가 어떻게 만들었 니?C + +에서 브라우저 요청 헤더 구문 분석

다음

내 헤더입니다 ...

GET /test?username=2 HTTP/1.1 
Host: stream.mysite.com:7777 
Connection: keep-alive 
Cache-Control: max-age=0 
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: auth=asdfasdfaasdfasd 

나는 페이지 (/ 테스트? 이름 = 2)와 쿠키 변수 인증 (asdfasdfaasdfasd)의 콘텐츠를해야합니다.

감사합니다.

+0

나는 내 프로그램에서 나중에 치료할 수있는 정보를 별도의 변수에 넣었습니다. – GabrielBiga

+1

나는 그것을 깨닫는다. 그러나 당신은 벌써 그것을하려고 노력 했느냐, 또는, 단지 당신에게 우리가 그것을 쓰기를 바랄까요? 이미 시도하고 문제가있는 경우 특정 문제에 대해 Google에 문의 할 수 있습니다. 그러나 코드를 작성하기를 원하면이 위치가 적합하지 않습니다. – icktoofay

답변

4

당신은 시작했습니다 :

#include <iostream> 
#include <string> 
#include <sstream> 
int main() { 
    std::string tk1, tk2, line = "GET /test?username=2 HTTP/1.1"; 
    std::stringstream ss(line); 
    ss >> tk1; 
    ss >> tk2; 
    if (tk1 == "GET") { 
    std::cout << "requested path: " << tk2 << std::endl; 
    } 
    return 0; 
} 
2

HTTP 요청은 정의된다 :

http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html

은 기본적으로 당신이 알아야 할 사항 :

GET <URL> <HTTP-Version><CRLF> 
<Set of Headers each line terminated with <CRLF>> 
<Empty Line with just <CRLF>> 

당신이 원하는 비트는 항상 바로 GET 후 <URL> 될 것입니다 당신 "Cookie"문자열을 검색해야합니다.