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/

第二个问题:

即使用户不使用我的表单,如果他们使用网络爬虫简单地访问demo_form?name=ABCor demo_form/ABC/,也会产生相同的结果。我想阻止这种情况。如果用户通过我的表单提交名称,那么使这两个 URL 有效的最佳方法是什么?我正在学习 django,所以希望该解决方案适用于 django 框架。

提前致谢!

4

1 回答 1

2

有没有办法让它提交给 demo_form/ABC/?

您可以在 JavaScript 中拦截提交,手动构建 URL,然后设置location. 如果 JS 不可用,那将会中断。

更明智的是,您可以在收到请求时发送 HTTP 301 重定向响应demo_form?name=ABC

如果用户通过我的表单提交名称,那么使这两个 URL 有效的最佳方法是什么?

一般来说,访问表单不应该是任何涉及 GET 请求的先决条件。GET 的很大一部分意义在于结果是可收藏的、可链接的等。

如果它是一个 POST 请求会更容易理解,因为这些请求旨在更改服务器上的数据,并且您需要防止CSFR。针对 CSRF 的标准保护是存储在表单和 cookie 中的令牌

于 2013-01-14T16:02:12.303 回答