|
出来るのだ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 |