5/19の記事の続きです。
このバグの対策としてMicrosoftが提示しているのは、以下の2点を行うことです。
(1) HttpOpenRequestの第4引数を"HTTP/1.0" とする。
(2) Internet Explorerの詳細設定の「HTTP 1.1 を使用する」をOFFにする。
HTTP 1.0を使うだけなのになんでInternet Explorerの詳細設定を変更する必要があるんでしょうね。
ちょっと疑問に思ったので、これらの設定を変更した結果、リクエストヘッダのバージョンがどうなるのか調べてみました。
HttpOpenRequestの第4引数 | 詳細設定の「HTTP 1.1を使用する」 | リクエストヘッダのバージョン |
NULL | ON | HTTP/1.1 |
NULL | OFF | HTTP/1.0 |
"HTTP/1.0" | ON | HTTP/1.1 |
"HTTP/1.0" | OFF | HTTP/1.0 |
"HTTP/1.1" | ON | HTTP/1.1 |
"HTTP/1.1" | OFF | HTTP/1.1 |
(1)の実施は必須ではなく、HttpOpenRequestの第4引数はNULLでも良いようですが、残念ながら、(2)の実施は必須のようです。(2)を実施しないと、HTTP 1.0を使うことはできません。HttpOpenRequestの第4引数がどうあれ、強制的にHTTP 1.1になってしまうようです。うーん。
投稿者 MASATO : 2006年05月20日 19:39 | トラックバックこれって不具合なんですね・・・。
私も"Internet Explorerの詳細設定の「HTTP 1.1 を使用する」をOFFにする。"とするべきじゃないかと思っていますが、今までHTTP 1.1を使っていたアプリケーションがみんなHTTP 1.0を使うようになってしまうので、副作用が怖いですね。
テストする時間が取れたので試してみたのですが、
こういうオチがあるようです。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B258425
InternetSetOptionでの指定も同様でした。
InternetOpen時にINTERNET_OPEN_TYPE_DIRECT ならばレジストリ
設定の参照が無さそうなのでOKかな?と推測したのですが、これもダメでした。
一時的にレジストリを操作する方法もありますが… マズイですよね。
このような現象が頻発しているユーザーに対しての私の結論は、
他のWinInetアプリケーションでも現象が発生する可能性を考えると
"Internet Explorerの詳細設定の「HTTP 1.1 を使用する」をOFFにする。"
でしょうか。
こういう不具合って困りますよね~。
(ちなみに IE7がインストールされている環境でも改善されていません)