1

最初の質問:

このフォームはに送信しますdemo_form?name=ABC

<form action="demo_form" method="get">
  name: <input type="text" name="name"><br>
  <input type="submit" value="Submit">
</form>

提出させる方法はありdemo_form/ABC/ますか?

2番目の質問:

ユーザーが私のフォームを使用しなくても、Webクローラーを使用してdemo_form?name=ABCまたはdemo_form/ABC/にアクセスするだけで、同じ結果が得られます。それを防ぎたい。ユーザーが私のフォームから名前を送信した場合にのみ、これら2つのURLを有効にする最良の方法は何ですか?私はdjangoを学んでいるので、うまくいけば、ソリューションはdjangoフレームワークで機能します。

前もって感謝します!

4

1 に答える 1

2

demo_form / ABC /に送信する方法はありますか?

JavaScriptで送信をインターセプトし、URLを手動で作成してから、を設定できlocationます。JSが利用できなかった場合、それは壊れます。

さらに正直なところ、次のリクエストを受け取ったときにHTTP301リダイレクト応答を送信できます。demo_form?name=ABC

ユーザーが私のフォームから名前を送信した場合にのみ、これら2つのURLを有効にする最良の方法は何ですか?

一般的に言って、フォームにアクセスすることは、GETリクエストを含むものの前提条件ではありません。GETのポイントの大部分は、結果がブックマーク可能、リンク可能などであるということです。

POSTリクエストはサーバー上のデータを変更することを目的としており、 CSFRから保護する必要があるため、POSTリクエストの方が理解しやすくなります。CSRFに対する標準的な保護は、フォームとCookieに保存されたトークンです。

于 2013-01-14T16:02:12.303 に答える