- PR -

ASP.NETでのページ間におけるデータの受け渡し

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-06-28 22:55
ちなみに、このユーザで認証されたという情報を渡すのも、普通はだめです。

暗号化関連の何かを使わないとね。
けい
会議室デビュー日: 2007/06/28
投稿数: 6
投稿日時: 2007-07-02 21:17
皆様どうもありがとうございます。
大変勉強になりました。

ちなみにCookieでのやり取り時は暗号化を行っています。
また、SSLも実装予定です。
ただ、他の画面は自分で作るわけではないので、Cookie以外は複合化が出来ない為、
Postの暗号化は出来ないんです。

おかげで1.1では厳しそうだとわかりました。
なので2.0で試してみることになりました。


引用:
-------------------------------------------------------------------------------
   .NET1.1では別ページへのPOSTはすんなりとは行かないですね。
-------------------------------------------------------------------------------
べる、様↑との事ですが2.0では何か方法はないでしょうか?

2.0から実装されたPostBackUrlがあるということを知り、やってみました。
しかし、ボタンを押す必要があることと。
.aspx以外の遷移先を設定してみたところ、エラーとなってしまった事から
使うことが出来ないとわかりました。


質問ばかりで申し訳ありませんが、皆様よろしくお願い致します。





[ メッセージ編集済み 編集者: けい 編集日時 2007-07-02 21:18 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-07-03 15:51
引用:
あ、それと、sleep しなくても、ソースの中の値は変わっていないはずですよ。

私もこれが不思議でした。1瞬表示されてすぐsubmitされちゃう(からソースを見れない)ページでもあるんですかね。

引用:
しかし、ボタンを押す必要があることと。

ボタンを押さないでどうやってポストさせようとしてるのですか?

ブラウザから直接ポストさせたいんですよね?
ブラウザが.netサーバにリクエストして、.netサーバがクライアントとなり別サーバにポスト
という実装ではないですよね?今回のって。

引用:
.aspx以外の遷移先を設定してみたところ、エラーとなってしまった事から
使うことが出来ないとわかりました。

.NET側でエラーになってますか?だとしたら、どんなエラー?
ポスト先でエラーになっているのなら、単にポスト先が必要としているパラメータを渡せていない等の、
ポスト先の問題じゃないですかね。

ただ、これってjavascriptを自動的に作ってくれてるだけなんで、私が先に書いた
「submitする瞬間にjavascriptでactionを変更」と根本的には変わらないんだとおもいますけどね。
けい
会議室デビュー日: 2007/06/28
投稿数: 6
投稿日時: 2007-07-03 16:44
そういえば流れを書いたことが無かったので一応記述させていただきます。
以下の処理で動きはするのですが条件に合わないので改良しなくてはいけませんが…。

ポータル画面でID 言語 pass を入力
 ↓
リンクボタンから連携アプリケーションへリンク
データはpostで送られる
 ↓
 ↓(ここからの連携アプリケーションの開発を行っております)
 ↓
postで送られたデータを取得
 ↓
IDとpassを使いLDAP認証
 ↓(post)の場合
(ここから改良が必要)
認証された場合はaspのtextboxにIDと言語を代入 or CookieにIDと言語を格納
 ↓
RegisterStartupScriptでjavascriptが開始されてます。
 ↓
javascriptにactionのセット、データのsubmitをさせる
 ↓
ページ移動
ソースに表示されてしまう や Cookieを使用してしまった等の
問題はありますが、一応データは渡っています。

説明が上手く出来ず申し訳ありません。
用語類もまだまだ勉強不足で。

このように連携アプリケーションは自動で
認証→データの加工(postならformに入れsubmit等)→ページ移動
を行うので、ボタンを押したりする時が無いんです。

また、
PostBackUrlで.aspxでは無いサイトへ遷移させてみたところ
アプリケーションでのサーバーエラーが起こり、
「'~/URL'は有効な仮想パスではありません」
と表示されました。
他のページへ遷移するといっても、postbackには変わらないので
.aspxにのみなのだろうなと考えてしまいました。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-07-03 17:57
ポストバックできるのは同一アプリ内だけです。
当然ASP.NET以外へのポストバックもできません。

で、それはそれとして、このような仕組みだと、誰でも認証を無視して
なりすましログインみたいなことができてしまうということが分かりますか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-07-03 18:18
引用:
認証された場合はaspのtextboxにIDと言語を代入 or CookieにIDと言語を格納
 ↓
RegisterStartupScriptでjavascriptが開始されてます。
 ↓
javascriptにactionのセット、データのsubmitをさせる

引用:
このように連携アプリケーションは自動で
認証→データの加工(postならformに入れsubmit等)→ページ移動
を行うので、ボタンを押したりする時が無いんです。

やはりそうでしたか。この情報が重要でした。

引用:
また、
PostBackUrlで.aspxでは無いサイトへ遷移させてみたところ
アプリケーションでのサーバーエラーが起こり、
「'~/URL'は有効な仮想パスではありません」
と表示されました。
他のページへ遷移するといっても、postbackには変わらないので
.aspxにのみなのだろうなと考えてしまいました。

ポストバックという動作にはなりませんが他サイトへポストを行うことはできますよ。
URLの書き方が間違ってるのかな。。。とりあえず絶対パスで書いてみるとか。

ただ、PostBackUrlでやっても「ソースに表示されてしまう 」は変わらないでしょう。

ブラウザが値をポストする場合に大きく分けて「ユーザーが入力する」か「サーバーから渡してあげる」
のどちらかしかないわけで、後者の場合どうやっても表示されると思いますが?
例えばjavascriptでセットするにしてもjavascriptのソース見れば見れるわけですし。
暗号化して渡して、javascriptに復号ロジックを組むとかもできるかもしれないけど、
結局「Postの暗号化は出来ない」のであればどうやっても、POSTされるときにデータ見れば見れちゃいますから。

[追記]ajaxでも取り入れるとなると、話は変わってきますかね。

[ メッセージ編集済み 編集者: べる 編集日時 2007-07-04 00:43 ]
けい
会議室デビュー日: 2007/06/28
投稿数: 6
投稿日時: 2007-07-04 09:18
返答ありがとうございました。


なちゃさん
すみません、まだよくわかってないもので。
もっと勉強に励みます!


べるさん
PostBackUrlですが、~/を取ったら遷移が可能となりました。
サンプルでだいたい付いていたので付けてしまったのですが。
これがまずかったんですね。
ありがとうございます。

ajaxでしょうか?
まったくの未知の領域だったので手を出さずにいたのですが…。

わかりました、少し調べてみます!

お二人ともご指導どうもありがとうございます!
yos
常連さん
会議室デビュー日: 2004/08/24
投稿数: 27
投稿日時: 2007-07-04 11:25
引用:
PostBackUrlですが、~/を取ったら遷移が可能となりました。
サンプルでだいたい付いていたので付けてしまったのですが。
これがまずかったんですね。



【ASP.NET アプリケーションにおける主なパスの記法】

  • 絶対パス : http://www.hogehoge.com/xxx/yyy/images/aaa.jpg
  • 相対パス(サイトルート) : /xxx/yyy/images/aaa.jpg
  • 相対パス(アプリケーションルート): ~/yyy/images/aaa.jpg
  • 相対パス(カレントフォルダ) : ./images/aaa.jpg または images/aaa.jpg

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