ASP ページにアクセスすると、「応答オブジェクト エラー ASP 0156: 80004005 HTTP ヘッダー エラー?、行 0 で HTTP ヘッダーがクライアント ブラウザーに出力されました」というプロンプトが表示されます。 HTTP ヘッダーへの変更は、ページのコンテンツを出力する前に行う必要があります。
実際、この種の問題はキャッシュの問題が原因で発生します。解決するには次の方法を参照してください。
一部の ASP ページでは、初めて開いたときに応答オブジェクト エラー 'ASP 0156: 80004005' と HTTP ヘッダー エラーが発生しますが、更新すると正常に戻ります。解決策は次のとおりです。
次のようにコードをコピーします。
応答.バッファ = True
'この行のはずなので削除しても大丈夫です
「それでもダメだったら、
応答.バッファ = True
Response.ExpiresAbsolute = Now() - 1
応答.期限切れ = 0
Response.CacheControl = "キャッシュなし"
Response.AddHeader "プラグマ"、"キャッシュなし"
' それらをすべて削除します。これは、ページをキャッシュしないようにするために使用されます。削除しても Web サイトには影響しません。
このエラーは、Web サーバーが HTTP ヘッダーを使用してクライアント ブラウザを設定するために発生します。次に、Web サーバーは追加の HTTP ヘッダーを使用してクライアントのブラウザーをリセットしようとします (たとえば、ブラウザーが content-type = text/html に設定した後に HTTP ヘッダーが発行された場合)。 例としては、HTML タグまたはその他のサーバー側スクリプトの Response.Redirect ステートメントを組み込む前に ASP ページを処理する場合が挙げられます。
注: これは、Microsoft Windows NT 4.0 を実行しているコンピュータを Microsoft Windows Server 2003 にアップグレードした場合にも発生する可能性があります。
例としては、HTML タグまたはその他のサーバー側スクリプトの Response.Redirect ステートメントを組み込む前に ASP ページを処理する場合が挙げられます。
Response オブジェクトの ASP の次のプロパティとメソッドは、HTTP ヘッダーを書き込みます。
Response.AddHeader
Response.CacheControl
応答.CharSet
Response.ContentType
応答.期限切れ
Response.ExpiresAbsolute
応答.リダイレクト
応答.ステータス
トップに戻る
解決
この問題を解決するには、HTML 出力を送信する前に、リダイレクト ステートメントや Cookie 情報などの HTTP ヘッダーを設定します。
たとえば、リダイレクトでこのエラーを回避するには、バッファまたは ASP ページの処理を制限し、処理後にリダイレクトを発行します。 バッファリングを実行するには、ページ レベルまたはアプリケーション レベルの 2 つの方法があります。
すべての ASP スクリプトはリダイレクト後に発行されることに注意してください。 ASP ページが ASP スクリプトに発行される前にリダイレクトされた場合、ASP コードは処理されません。
これらがアプリケーション レベルで処理されると、Web アプリケーション内のすべての ASP ページがバッファリングされます。 アプリケーション レベルでバッファリングを設定するには、次の手順を実行します。 1. Microsoft 管理コンソール (MMC) で、Web アプリケーションが存在する Web サイトを見つけます。
2. クリックして Web サイトを展開し、仮想ディレクトリと Web アプリケーションを表示します。
3. Web アプリケーションを右クリックし、[プロパティ] をクリックします。
4. [仮想ディレクトリ] タブで、[構成] をクリックします。
「構成」ボタンが使用できない場合、仮想ディレクトリは Web アプリケーションではないことに注意してください。 「作成」をクリックして、Web アプリケーションに仮想ディレクトリを作成します。
5. [ApplicationConfiguration@@] ダイアログ ボックスの [アプリ オプション] タブで、[バッファリングを有効にする] をクリックします。
バッファリングのページ レベルを設定するには、以下に示すように、ASP ページの @LANGUAGE 行の後にコードを追加します。
<% @LANGUAGE = "VBScript" %><% Response.Buffer = True %>他の ASP/クライアントサイド スクリプトまたは HTML ...<% Response.Redirect %>次のコードが示すように、さらに Cookie 設定を使用できます。ページレベル、バッファ上で。 このコード スニペットは、<HTML> タグ (要素) を送信する前に Cookie を書き込みます。
Response.Cookies("名前")=値<HTML>...内容...</HTML>
小さな旋風を使用している場合は、コンポーネントが不足しています。