|
말씀하신 부분에 대해서는 충분히 이해가 됩니다.
다만 제 질문에 대해서 약간 더 부가 설명을 드리자면...
예를들어서 google등에 접속시 server에서 client로 전송하는 cookie를 paros등의 Local Proxy로 sniffing하였을경우 다음과 같을것입니다.
Cookie: NID=14=pjCVOxFjcf-AFiPzJTIByVuAdtCxCXzGPpbaWSNdTU4afyT1oUfqAE1yApOPLPDLod2yz-bYYmpn757T77UHrNOqg3LPHDCBgwg1i84WnfGt9FlW3B1xO5mDipYMgh88; PREF=ID=2f7dd4350f1cd24a:NW=1:TM=1219402881:LM=1219402881:S=dviVRt-14krZOAh2
위의 Cookie 값의 길이를 체크해보면 "Cookie:"를 제외한 길이가 214bytes입니다. server와 client간에는
인증을 위해서 google에서 발급한 cookie를 계속해서 주고 받을것입니다.
제 질문은 indy idHTTP로 개발한 client에서는 80bytes이상을 server로 전송할 경우 짤린다는 것입니다.
그러므로 필더포함 80bytes이상을 HTML Header에 넣을수 없다는 것이였습니다.
p.s
기존 질문에서 필더이름을 포함한 총길이는 80bytes일것입니다.
!! 답변주셔서 감사합니다...
박지훈.임프 님이 쓰신 글 :
: 질문을 정확히 이해했는지 모르겠는데...
:
: HTTP 헤더에 임의로 추가한 내용이 68바이트에서 개행 문자가 들어간다는 말씀이신지요.
: 일단, 정확히 68바이트가 되는 건 아니겠지만...
:
: HTTP가 통신하는 포맷은 기본적으로는 인터넷 메시지 포맷입니다. E메일 포맷과도 같죠. 그런데 이 인터넷 메시지 포맷의 표준 정의상, 한 라인이 80컬럼이 넘으면 자동으로 개행 문자가 들어가도록 되어 있었던 걸로 기억합니다. 단순하게 개행 문자만 들어가는 게 아니라, 다음 라인에 몇개의 스페이스 문자가 들어가고 나머지가 wrap 되어서 이어집니다. 이건 '원래 의미가 다음 라인으로 넘어가는 것이 아니라 너무 길어서 래핑된 거다' 라고 알려주기 위해서구요.
:
: 이 80 컬럼 약속 말고도 75 컬럼을 쓰는 경우도 있구요. 게다가, 80/75 컬럼 규칙도 강제적인 약속은 아니어서 프로그램마다 75~80 컬럼을 넘어도 웬만하면 그냥 한줄로 다 쓰는 경우도 많습니다. 75 혹은 80 컬럼 규칙을 칼같이 지키는 프로그램도 많고요. 한마디로 중구난방이죠.
:
: 그래서, 개발하는 입장에서는, 서버쪽에서는 이게 개행문자가 들어가든 안들어가든 다음 라인의 첫 문자가 스페이스인가를 검사해서 스페이스이면 다음 라인을 이전 라인의 뒤에 붙여서 해석하도록 프로그래밍을 해야 합니다. 인터넷 프로토콜 관련 개발을 하다보면 이렇게 규칙이 루즈하게 되어 있어서 여러가지 케이스를 다 고려해야 하는 경우가 흔합니다.
:
: 그럼...
:
:
: 이태흔 님이 쓰신 글 :
: : 안녕하세요.. HTTP Client 개발중에 막히는 부분이 있어서 염치불구하고 질문 올립니다.
: :
: : HTTP Header의 일부분을 자체적으로 사용할경우 다음과 같이 정의해서 사용할수 있을것 같습니다.
: :
: : AnsiString szAuth;
: : szAuth = "뭐뭐뭐뭐.............";
: : IdHTTPX->Request->ExtraHeaders->Values ["Auth"] = szAuth;
: :
: : 근데 위와 같은 방식으로 HTTP 데이타를 전송할 경우 szAuth에 68bytes이상 보낼경우 짤리는것 같습니다.
: : 관련해서 Indy Library Core Module을 들여다봐도 68byte이상을 제한하고 있는 부분은 보이질 않고..
: : (Borland C++ Builder 6.0을 설치하면 Default로 설치되는 Indy 8과 별도로 설치한 Indy9에서 동일한 현상이 있는것 같습니다.)
: :
: : 혹시 비슷한 경험있으신분 계시면 도움 부탁드립니다.
: :
: :
: :
: : 읽어주셔서 감사합니다.
|