- PR -

Context.Response.Redirect()の動作をPOSTにしたい

1
投稿者投稿内容
ZOO
会議室デビュー日: 2004/10/21
投稿数: 7
投稿日時: 2004-10-28 18:58
お世話になっております。
ZOOと申します。
現在VisualStudio2003を使用しましてASP.Netの開発を行っております。

ページ遷移についてご相談させてください。
私は今は「Context.Response.Redirect()」を使用して開発を行っております。
遷移先画面の「Page_Load()」で「Context.Request.HttpMethod」propertyを
確認しましたところ「Redirect()」を使用すると"GET"を使用して
コンテンツを取得していました。

この"GET"でコンテンツを取得する「Redirect()」の動作を"POST"に
変更したいのですが、これは難しいでしょうか?
わがままを言って申し訳ないのですが、「Context.Server.Transfer()」は
ブラウザのURLが遷移先に変更されないため、使用したくないです。

どなたか方法をご存知のかたいらっしゃいましたらお手数ですが、
ご教授よろしくお願いいたします。


ちなみに"POST"に動作を変更する目的ですが、
ユーザーがブラウザの戻るボタンをクリックした場合は
必ず「警告 : ページの有効期限切れ」という
画面がでるように実装したいからです。

調べてみましたところ、この画面を出すためには
クライアントのキャッシュ設定をno-cacheにするだけではなく、
"POST"でのコンテンツ取得が必須ということでしたので、
このような質問をさせていただきました。

以上よろしくお願いいたします。
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2004-10-28 22:08
Redirect で POSTさせることはできません。
このあたりは、HTTPなどプロトコルについて調べられると
どうしてできないか分かります。

javascript が有効なブラウザであれば、
POSTさせるHTMLを出力することでできます。
無効にしている場合もあるので、ジャンプしない場合は、
ボタンをクリックしてください。などの補足説明も
付け加えた方がいいでしょうね。
コード:
<html>
	<head>
	<script>
		function goPost()
		{
			frm.submit();
		}
	</script>
	</head>
	<body onLoad="javascript:goPost();">
	<form method="post" action="postdest.aspx" id="frm">
		<input type="hidden" name="s1" value="postdata">
		<input type="submit"  value="submit">
	</form>
	</body>
</html>


ZOO
会議室デビュー日: 2004/10/21
投稿数: 7
投稿日時: 2004-10-28 22:33

いのつち様

回答ありがとうございました。
RedirectではPOSTは無理なのですね。
理由については調べてみたいと思います。

提示してくださいました、解決法ですが、
現在構築しているシステムがB2Cであるためブラウザの設定を
こちら側から指定できないのと、デザイン上の制約のため
JavaScriptによる解決は難しい状態です。

JavaScriptを用いず、なんとか「警告:期限切れ」ページを
出力する方法はないでしょうか?


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-10-29 21:15
引用:

zooさんの書き込み(2004-10-28 22:33)より:

JavaScriptを用いず、なんとか「警告:期限切れ」ページを
出力する方法はないでしょうか?


 ASP.NETでJavaScript(VBScript)を用いないWebアプリ…というのは、ほとんど不可能なような?
 例えば、何らかのサーバコントロールのAutoPostBackプロパティをtrueにすると、JavaScriptが吐き出されます。HTTPの仕組みをほとんどご存じないように見受けられます(過去のスレッドを参照)。もし、「Windowsアプリケーションは作ったことがある」というのなら、致命的です。Windowsアプリケーションと同じように作ろうとして、必ず躓きます。同じように作ろうとすることができるため、同じように作ろうとして、ベースとなる技術が違うために、実現できずに躓くのです。
 ほとんど無理とは思いますが、設計の見直すことを勧めます。また、ASP.NETの周辺技術を知ることを、強く勧めます。

_________________
ZOO
会議室デビュー日: 2004/10/21
投稿数: 7
投稿日時: 2004-10-29 21:39
Jitta様

返信ありがとうございました。
お察しの通りHTTPについて基礎的な知識を持ち合わせておりません。
現在勉強中です。
生成されたHTMLを見てみるとJavaScriptも出力されているので、
Jittaさんがおっしゃるとおり、JavaScriptを使用しないASPの
開発はナンセンスですね。
どのブラウザでも確実に動作するSCRIPTのみ使用して、
今回の問題を解決できいか再考してみます。

貴重なご意見ありがとうございました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-10-30 09:14
ZOOさん、お早うございます。

引用:

どのブラウザでも確実に動作するSCRIPTのみ使用して、


引用:

ユーザーがブラウザの戻るボタンをクリックした場合は
必ず「警告 : ページの有効期限切れ」という
画面がでるように実装したいからです。


これって、ブラウザの実装だとか設定だとかに依存しませんか?
考慮すべきは、「戻るボタン」を使用する事によって起こり得る実害を回避する事ではないかと思います(他にダブルクリックやリロードの問題も)。
この点については、この会議室でも何度か話題になっていますので、一度、Insider.NET 会議室 ディレクトリとか、検索とかで調べてみては如何でしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)