0

IXMLHTTPRequest2オブジェクトを使用してWindows8でHTTPリクエストを送信しようとしていますが、送信するAccept-Encodingヘッダーをデフォルト値の「gzip、deflate」以外にカスタマイズしたいと思います。SetRequestHeaderメソッドを使用してAccept-Encodingヘッダーを設定しようとすると、メソッド呼び出しは成功しますが、要求は、指定した値ではなくデフォルトのヘッダー値で送信されます(Wiresharkを使用してHTTP要求をキャプチャすることで確認済み)。

サンプルコード(わかりやすくするために簡略化):

::CoCreateInstance( CLSID_FreeThreadedXMLHTTP60, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( &m_pXHR ));
m_pXHR->Open( "GET", "http://192.168.0.100/test", m_pXHRCallback.Get(), NULL, NULL, NULL,NULL );
m_pXHR->SetRequestHeader( L"Accept-Encoding", L"gzip" );
m_pXHR->Send( NULL, 0 );

行われるリクエストのWiresharkキャプチャ:

GET /users/me/id HTTP/1.1
Accept: */*
Host: 192.168.0.100
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
4

3 に答える 3

1

SetRequestHeaderのドキュメントによると、これは追加操作のみです。gzip Accept-Encoding を取得しているので、意図したとおりに機能していると思います。ただし、デフォルトのヘッダーを削除する方法がわかりません。

于 2013-01-11T18:27:52.950 に答える
0

XHR_PROP_NO_DEFAULT_HEADERS で IXMLHTTPRequest2::SetProperty() を使用して、デフォルトのヘッダーを抑制することができるようです。

参照: http://msdn.microsoft.com/en-us/library/windows/desktop/hh831167(v=vs.85).aspx

于 2013-12-06T09:13:29.830 に答える