useUnsafeHeaderParsing

useUnsafeHeaderParsing

我正在尝试访问嵌入式设备上的网页。
我在Win32上使用WinHttp。
尝试读取响应时出现错误


  ERROR_WINHTTP_INVALID_SERVER_RESPONSE
  12152
  服务器响应无法解析。


但是当我用WireShark捕获时,我可以看到响应即将到来。
因此,为了测试,我编写了一个简单的C#程序。
GetResponse引发异常


  服务器提交了违反协议的协议。 Section = ResponseHeader
  Detail = CR后必须加LF


因此,根据以下解决方案,我将useUnsafeHeaderParsing设置为true。而且效果很好。

HttpWebRequestError: The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF

由于我无法使用C#,因此我需要找到一种方法来将WinHttp与Win32 C ++的useUnsafeHeaderParsing设置为true

非常感谢

最佳答案

我简要地研究了option flagsWinHttpSetOption并找到了以下条目:


  WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING
      此选项保留供内部使用,不应调用。


由于该选项看上去链接了一个开/关开关,因此我将尝试执行以下操作:

BOOL bResult;
BOOL bOption = FALSE;

bResult = WinHttpSetOption(hInternet,
                           WINHTTP_OPTION_UNSAFE_HEADER_BLOCKING,
                           &bOption,
                           sizeof(bOption));
if (bResult == FALSE)
{
    /* handle error with GetLastError() */
}


很好,但是正如MSDN所说,它仅供内部使用,因此功能将来可能会更改(或已在过去更改)。但这值得一试...祝您好运!

08-07 03:48