【问题标题】:What's the difference between request.env['REQUEST_URI'] and request.env['REQUEST_PATH']?request.env['REQUEST_URI'] 和 request.env['REQUEST_PATH'] 有什么区别?
【发布时间】:2009-10-03 23:17:59
【问题描述】:

Rails 中的 request.env['REQUEST_URI'] 和 request.env['REQUEST_PATH'] 有什么区别?它们似乎总是包含相同的值。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我相信 delroth 关于区别是正确的,但是在几乎所有情况下,最好使用 Request 中的方法而不是直接访问环境变量。

    request.request_uri 返回请求的 url,包括查询字符串,不包括域。

    request.path 返回请求的路径,不包括查询字符串、域和任何相对根目录(如果您的应用从根目录以外的目录运行)。

    查看ActionDispatch::Request 的 Rails API 以查看其他有用的方法。

    【讨论】:

    • request_uri 不再是 Rails 3 中的方法。
    • 在 Rails 5 和 6 中,您可以使用 request.original_fullpath
    【解决方案2】:

    我相信 REQUEST_URI 还包含查询 GET 参数,而 REQUEST_PATH 不包含。但我并不完全确定。

    例如:

    • REQUEST_URI = /foo/bar/?x=1&y=2
    • REQUEST_PATH = /foo/bar/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多