出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

[1246] Re:【HTTP ヘッダーはすでにクライアントのブラウザに書き込まれています。】
投稿者:ハシモトさん 2001/12/12 12:51:12
> 【理屈】 
> ■aspは、サーバのメモリの中で(スクリプトを使って一時的に)作成した文字列を、中身はHTML文書と同じ形式で、クライアントに送り返します。
>  
> ■次のスクリプトならエラーは出ません。
> ---------"/alias/1.asp"----------
> <% if request.form("x")="A" then %>
> <html><body>
> <p>xの値は</p>
> <p>Aです。</p>
> </body></html>
> <% elseif request.form("x")="B" then %>
> <html><body>
> <p>xの値は</p>
> <p>Bです。</p></body></html>
> <% else %>
> response.redirect "/alias/9.asp"
> <% end if %>
> -------------------
>  
> この場合、サーバは、
> request.form("x")が"A"なら、HTML文書と同じ形式の文字列
> 『<html><body><p>xの値は</p><p>Aです。</p></body></html>』
> だけを、クライアントに送ります。
>  
> request.form("x")が"B"なら、HTML文書と同じ形式の文字列
> 『<html><body><p>xの値は</p><p>Bです。</p></body></html>』
> だけを、クライアントに送ります。
>  
> request.form("x")が"A"でも"B"でもなければ、
> "/alias/9.asp"
> に移動します。
>  
>  
> ■次のスクリプトは、response.redirectを実行しようとすると、エラーが出ます。
> ---------"/alias/2.asp"----------
> <html><body>
> <p>xの値は</p>
> <% if request.form("x")="A" then %>
> <p>Aです。</p>
> </body></html>
> <% elseif request.form("x")="B" then %>
> <p>Bです。</p>
> </body></html>
> <% else %>
> response.redirect "/alias/9.asp"
> <% end if %>
> -------------------
>  
> この場合、サーバは、最初に(if が始まる前に)
> 『<html><body><p>xの値は</p>』
> という文字列をクライアントに送っています。
>  
> 次にrequest.form("x")が"A"または"B"なら
> 『<p>A(または、B)です。</p></body></html>』
> を送り、(response.redirect "/alias/9.asp" へは差し掛からないから)無事終了します。
>  
> ■ところが、"A"でも"B"でもなければ、"/alias/9.asp"に行こうとするのですが、
> では既にブラウザに送ってしまった
> 『<html><body><p>xの値は</p>』
> の文字列は、どう始末をつければ良いのか、という問題が発生します。
>  
> ブラウザ画面には、「xの値は」が表示された、と思った途端に全く別の9.aspの画面に変わる?
> 多分そういう仕組も可能だったのでしょうが、マイクロソフト社(?)は、無駄な文字列がWEB交通を混雑させるのを嫌ったのでしょう。 
> ブラウザに何か表示させるものを送ってしまった後は、response.redirectできないようにしました。
> ヘッダーとは、『<html><head>〜</head>』の部分です。
> 『<html>』の1語だけでもブラウザに送ったら、response.redirectは不可、としました。
>  
> これは仕様です。
>  
> ==================================================
> 【対策】
> "/alias/2.asp"のように
> 『<html>〜』の後に『response.redirect』が来る
> ような書き方をしないで、
> "/alias/1.asp"のように、
> 『response.redirect』の前では、HTML文のたとえ一部でも、一切書かない
> ように工夫を要することになります。

Response.Redirect   ハシモトさん [2001/12/12 10:50:46] [1235]
  発言者により削除されました!! 北岳さん [2001/12/12 11:54:56] [1239]
    発言者により削除されました!! 北岳さん [2001/12/12 12:16:15] [1243]
    発言者により削除されました!! 北岳さん [2001/12/12 12:19:32] [1244]
    Re:   ハシモトさん [2001/12/12 12:50:54] [1245]
    Re:【HTTP ヘッダーはすでにクライアントのブラウザに書き込まれています。】   ハシモトさん [2001/12/12 12:51:12] [1246]
  【HTTP ヘッダーはすでにクライアントのブラウザに書き込まれています。】   北岳さん [2001/12/12 12:59:49] [1247]
    再訂正   北岳さん [2001/12/15 11:42:41] [1265]


TreeBBS For ASP V.0.1.3
Program By YasNet