【问题标题】:How to only accept post variables in grails如何只接受 grails 中的 post 变量
【发布时间】:2011-12-05 11:56:46
【问题描述】:

在我的控制器中,我只想接受 POST 变量,而不是 GET 变量。据我所知,Grails 对 POST 和 GET 没有任何区别,虽然可以通过 request.method 检查请求方法,但我想专门只接受 POST 参数。怎么办?抱歉,如果我听起来太天真了,我只是以 PHP 的背景开始了 groovy 和 grails。

【问题讨论】:

    标签: grails


    【解决方案1】:

    这不是allowedMethods block 的用途吗

    即来自文档:

    class PersonController {
      // action1 may be invoked via a POST
      // action2 has no restrictions
      // action3 may be invoked via a POST or DELETE
      static allowedMethods = [action1:'POST',
                               action3:['POST', 'DELETE']]
      def action1 = { … }
      def action2 = { … }
      def action3 = { … }
    }
    

    【讨论】:

    • 是的,但是,GET 参数也可用,虽然允许的方法只有 POST。也就是说 /app/Controller/action1?a=2 在方法为 POST 时仍然使 params.a 可用。
    • "allowedMethods 映射根据 HTTP 请求方法限制对操作的访问。"你怎么知道有 GET 参数,因为从技术上讲,你不应该能够通过 GET 请求基于上述代码访问 action1?
    • @Gregg - 你仍然可以POST http://example.com/person/action1?foo=bar,我认为 OP 试图确保 foo 进入实体而不是通过查询参数。类似这个问题:stackoverflow.com/questions/1197729/…
    • 谢谢@RobHruska,这有帮助,但我想知道是否有一些直接的方法可用,而不是检查查询字符串。无论如何,谢谢,我将使用stackoverflow.com/questions/1197729/… 的解决方案
    猜你喜欢
    • 2011-04-17
    • 2018-08-20
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2014-04-01
    • 1970-01-01
    相关资源
    最近更新 更多