有没有什么办法(在Java Servlet中)来确定HTTP POST或GET请求是否是从HTML表单或其他方式提交的结果?如何区分从HTML表单提交的HTTP请求和从客户端提交的HTTP请求?
回答
你可能有一个隐藏的表单字段做+一个cookie。
你可以做的是建立一个nonce,并将其作为窗体的隐藏字段。然后,您会将其应用于与表单一起发送的Cookie。 cookie应该链接到隐藏字段,并且还应该包含某种随机数。最后,当表单被提交时,您可以检查cookie和隐藏字段,并查看它们是否正确。如果需要,请将其链接到表单原始请求的IP地址和用户代理。你甚至可以用一些Javascript来调味这一切。首先将隐藏的字段设置为空,但是接下来需要一些ajax来请求来自服务器的隐藏字段nonce。
这不会是完美的,但这应该让你有80%-90%的方式。有些体面的HTTP技能仍然可以欺骗它。
然而,它提出了这个问题,为什么你想区分该级别的请求?
或者你真的只是想弄清楚用户是否点击“提交”按钮? (如果是这种情况,则提交按钮的名称/值对应在请求实体/查询字符串中,具体取决于表单方法。)
我认为这是不可能的,除非客户端本身是共同经营(指客户端设置一些头)
不是真的。你可以检查用户代理字符串,但可以由调用者设置。
嗯,你可以看看代理字符串,看看它是否是从browsr,或从您的客户端应用程序(假设它有自己的代理字符串)
如果您拥有对客户端的控制权,那么您可以附加一个自定义标题来标识发件人。
一些JavaScript库在制作XmlHTTPRequests时已经这样做,以便您可以处理与标准请求不同的Ajax调用。
检查每个传入请求的标题以查看是否有任何可以使用的东西。
使用一些JavaScript设置一些值。
您不清楚您是否想要在合法的不同访问方法之间进行切换,或者针对伪造的攻击(即尝试看起来像普通用户的机器人或黑客)。
在第一种情况下,keprao对检查标题有一些很好的建议。在第二种情况下,基本上无法区分请求,但机器人可能会受到验证码或身份验证的阻碍。
- 1. 如何从HTML表单提交JSON编码的发布请求?
- 2. 当从客户端调用HTTP请求时,是否可以将http请求/请求分成多个请求?
- 3. 从客户端提交请求的时间戳
- 4. Worklight App提交大量HTTP 401请求
- 5. 发送简单的HTTP请求与HTML提交按钮
- 6. 通过ajax请求提交html表单?
- 7. 交易中的HTTP请求?
- 8. 如何提交来自C#的多部分/表单数据HTTP POST请求?
- 9. 如何从http请求中确定客户端的唯一性?
- 10. 如何从窗体客户端的HTTP请求获取值
- 11. 从http请求
- 12. 链中的Akka-http客户端请求
- 13. 客户端请求的ReastEasy Http标头
- 14. Apache的HTTP客户端每次请求
- 15. 将pdf表单字段提交到HTTP POST请求
- 16. 如何阻止非浏览器客户端提交请求?
- 17. 提交和请求提交之间的区别
- 18. http请求的HTTP请求
- 19. Ajax请求的表单未提交
- 20. 绕过提交表单的cookie请求
- 21. 如何在Javascript表单提交2分钟后取消http请求?
- 22. 区分插件HTTP请求和JavaScript HTTP请求
- 23. 如何区分使用express的Node.js中的HTTP请求和XML HTTP请求?
- 24. 如何区分http和cli请求?
- 25. 无法从http请求中提取JSON
- 26. 提取头从HTTP请求在Perl
- 27. 社交媒体提要 - 客户端或服务器端请求?
- 28. 如何自动确定登录和http请求所需的客户端请求?
- 29. 端的HTTP请求
- 30. 如何从JavaFX客户端发起HTTP发布请求
我想更多的上下文会给你更好的答案,你为什么要这样做? – 2008-09-25 06:04:24