0

私はajax呼び出しをフォローしています

open: function () {
                     $(this).load("MyBox.aspx?sec=L&levId=" + RowId);
                 }

人々はクエリ文字列を見ることができるので、ユーザーはURLをコピーしてブラウザに貼り付けることができますが、どうすればそれをブロックできますか?ブラウザから表示したくありません。どうすればそれができますか?私はasp.netとjqueryを使用しています。

4

3 に答える 3

2

load関数はGETリクエストを発行します。その代わりに、jQuery POST呼び出しを使用してデータを取得できます。ユーザーは、ブラウザーに貼り付けて Enter キーを押しても結果を取得できません (これは GET 要求です)。

  var thatObject=$(this);
  $.post("MyBox.aspx?sec=L&levId=" + RowId,function(response){
     thatObject.html(response);
  })

サーバー ページでは、 Request.Formコレクション (Request.QueryString ではなく) をチェックすることで、投稿された値を読み取ることができます。

msdnから

Form コレクションは、POST メソッドを使用するフォームを使用して、HTTP 要求本文にポストされたフォーム要素の値を取得します。

Request.RequestTypeプロパティ値を調べることで、呼び出しが GET 呼び出しか POST 呼び出しかを判断できます。こうすることで、このメソッドに GET リクエストを発行してレスポンスを取得することを避けることができます。

ただし、ブラウザーからの POST 要求を実行するツール/ブラウザー アドオンがあることを覚えておいてください。

また、データが許可されたユーザー向けである場合は、コンテンツを返す前に、サーバー ページ (MYbox.aspx) でユーザーがアクセスを許可されていることを確認できます。

于 2012-10-07T00:05:26.453 に答える
1

できません。クライアントで実行されているコードを信頼することはできません。クライアントでデータを非表示にする必要がある場合は、サーバー ベースのセッションを作成し、セッション トークンを暗号化された Cookie に入れる必要があります。

于 2012-10-07T00:05:14.270 に答える
1

ウィキペディアと W3C から

一部のメソッド (HEAD、GET、OPTIONS、TRACE など) は安全であると定義されています。これは、これらのメソッドが情報の取得のみを目的としており、サーバーの状態を変更してはならないことを意味します。つまり、ロギング、キャッシング、バナー広告の配信、Web カウンターの増加などの比較的無害な効果以外に、副作用があってはなりません。したがって、アプリケーションの状態のコンテキストに関係なく、任意の GET 要求を行うことは安全であると見なす必要があります。

対照的に、POST、PUT、DELETE などのメソッドは、副作用を引き起こす可能性のあるアクションを対象としています。

get リクエストがサーバーの状態を変更する場合 (投稿に基づいて変更される可能性が最も高い)、何か問題があります。あなたがやろうとしていることは不可能です。アーキテクチャを再考する必要があります。

于 2012-10-07T00:11:20.493 に答える