-1

C++ で単純な Web サーバーを作成しましたが、要求ヘッダーを解析する必要があります。どうやってそれを作ったのですか?

これが私のヘッダーです...

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

ページ (/test?username=2) と Cookie 変数 auth (asdfasdfaasdfasd) の内容を取得する必要があります。

ありがとう!

4

2 に答える 2

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;
}
于 2012-12-28T03:06:13.937 に答える
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:」を検索する必要があります。

于 2012-12-28T03:03:33.137 に答える