3

AJAX リクエストで POST を使用する場合と GET を使用する場合の性質について、同様の質問が寄せられています。

ここ: POST リクエストよりも GET リクエストを使用する利点は何ですか?

そしてここ: GET vs. POST ajax requests: いつ、どのように使用するのですか?

しかし、私が求めているのはそれではないことをはっきりさせておきたいと思います。冪等性、機密データ、エラーが発生した場合にブラウザーが再試行できる機能、およびブラウザーがクエリ文字列データをキャッシュできる機能を取得します。

私の実際のシナリオは、ユーザーが「Compute.cshtml」ファイル (つまり、jQuery$.ajax関数が投稿するサーバー上のファイル) への URL を単純に入力できないようにすることです。

私は WebMatrix C#.net Web ページ環境にいて、ファイル名の前にアンダースコア ( _) を付けようとしましたが、明らかに AJAX 要求は、このアンダースコアが表示を防ぐように設計されたのと同じ基準に該当し、もちろん、要求を破ります。

したがって、POST を使用すると、次のロジックを簡単に使用できます。

if (!IsPost)  //if this is not a post...
{
    Response.Redirect("~/") //...redirect back to home page.
}

GET を使用する場合、値を含む文字列のような追加データを送信"AccessGranted"し、反対側でそれをチェックして、この値と等しいかどうかを確認し、そうでない場合はリダイレクトできると思いますが、これはアドレスバーに入力することで簡単に複製できます (データが反対側で機密であるというわけではありませんが...)。

とにかく、このロジックを処理するために常に POST を使用してもよいか、または WebMatrix C#.net Web ページ環境で AJAX で GET または POST を使用することに関して、私の状況を処理する適切な方法は何かを尋ねていると思います。

4

3 に答える 3

2

私のアドバイスは、それらを止めようとしないことです。無害です。

  • 直接のリンクがないため、実際には表示されません。(Google のために、robots.txt で /api ディレクトリ全体を除外したい場合があります)。
  • とにかくアクセスできるのはデータなので (それ以外の場合はサーバー側のトリミングが必要です)、危険なものや機密情報を公開することはできません。
  • リンクしたように、GETのようなリクエストにGETを使用する利点はたくさんあります(キャッシング、セマンティクスなど)

では、その URL にブラウザから直接アクセスできるようにすることの害は何でしょうか? たとえば、Fiddlerの「構成」を使用して、十分に巧妙であれば、直接POSTすることもできます。URL 経由で GET にアクセスできるようにすると、デバッグに役立ちます。

編集: 詳細については、 http ://www.robotstxt.org/orig.html などのサイトを参照してください。ただし、/api と呼ばれる Web サービス ディレクトリから検索エンジンを除外した robots.txt は次のようになります。

User-agent: *
Disallow: /api/
于 2013-05-10T14:33:07.223 に答える
0

直接の AJAX 呼び出しを検出する 1 つの方法は、http_refererヘッダーの存在を確認することです。直接入力された URL はリファラーを生成しませんが、呼び出しを単純なアンカー リンクと区別することはできません。

(一部のブラウザーは XHR 要求のヘッダーを生成しないことに注意してください。)

于 2013-05-10T14:56:11.320 に答える