카테고리 없음

[HTTP] ERROR_HTTP_HEADER_NOT_FOUND 에러 발생시 원인 및 해결법

saltdoll 2013. 2. 13. 14:39
반응형

if ( !HttpSendRequest(m_hRequest, _T("Content-Type: application/x-www-form-urlencoded"), (DWORD)-1L, (LPVOID)strPostBlock.c_str(), nPostBlock) )
{ ... }
이런 코드를 배껴와서 이용해보니 IE6.0인 PC에서는 에러가 발생했다.

GetLastError()로 확인해 보니 12150 Error였다.
ERROR_HTTP_HEADER_NOT_FOUND (12150 - The requested header could not be located.)

이것의 원인을 몰라 여기저기 찾아 봤더니 아래와 같은 내용이 있었다.

I know this thread is about 4 years old. But I'm going to leave a reply here just in case someone else stumbles across it like I did.

According to RFC2616 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html[^]), a server that is HTTP1.1 compliant doesn't have to provide the content-length header if it provides the transfer-encoding header instead. In fact, if transfer-encoding is sent, you're supposed to ignore content-length.

All http applications must accept the "chunked" transfer-encoding if the content-length couldn't be determined ahead of time (in the cases of dynamic html pages, perhaps?). The browser will know how much data it has after it's downloaded the complete page. That's probably why you can see the content-length in your browser but not from the HttpQueryInfo function.

Check to see if the server you're querying is returning the transfer-encoding header instead of the content-length header.

(번역 요약:  * 내용의 포인트 HTTP1.1호환하는 서버는 content-length의 길이는 제공할 필요는 없다는 글입니다.)



살짝만 읽어 보면 누구나 눈치첸다. content-length 그래서 아래처럼 바꿨더니 모든 PC환경에서 잘 돌아갔다.
tstring tstrHeader = _T("Content-Type: application/x-www-form-urlencoded");
if ( !HttpSendRequest(m_hRequest, tstrHeader.c_str(), (DWORD)tstrHeader.length(), (LPVOID)strPostBlock.c_str(), nPostBlock) )
{ ... }


출처 :http://neokido.tistory.com/entry/HTTP-ERRORHTTPHEADERNOTFOUND-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D%EC%8B%9C-%EC%9B%90%EC%9D%B8


참고: http://support.microsoft.com/kb/193625/ko

WinInet 오류 정보

   12150       ERROR_HTTP_HEADER_NOT_FOUND
               The requested header could not be located.

반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)