【问题标题】:How to submit a form without having the values shown in the URL?如何在没有 URL 中显示的值的情况下提交表单?
【发布时间】:2011-09-14 12:49:02
【问题描述】:

我一直试图弄清楚这一点,但没有找到任何对我的特定案例有用的答案。

我有一个非常基本的 HTML 页面,用作我制作的 web 应用程序的前端。该页面上有两种表格-一种用于注册帐户,另一种用于使用现有帐户登录。这个想法是,如果您注册或登录,您将获得实际的 web 应用程序。

目前,我有这个工作,但表单内容会在提交时显示在 URL 中。这既不好看(因为 webapp URL 变为 url.com/?username=user&password=pass 而不仅仅是 url.com),而且也不安全,因为任何旁观者都可以清楚地看到用户名/密码是什么。

我已经尝试使用 jquery 表单来代替使用 ajax 提交此请求,并且我能够在我的服务器上成功查看和处理此请求,但是在将新的 HTML 页面返回给客户端时,浏览器不再加载这个新的页。我知道 jquery/ajax 是为了(至少部分地)在网页中启用交互功能而无需刷新整个内容,但是有什么方法可以使用它来实现这样的事情吗?

或者,是否有人对我如何实现目标有任何其他想法?

另外,为了确保 - 如果我想通过 SSL 提交这个(我最终会这样做),我只需要更改这个表单被提交到的 URL 以包含 https 而不是 http,正确?

最好,谢谢,
萨米

【问题讨论】:

    标签: jquery html ajax forms ssl


    【解决方案1】:

    使用POST 方法而不是GET,当您使用GET 时,表单值在查询字符串中可见

    When should I use GET or POST method? What's the difference between them?

    【讨论】:

      【解决方案2】:

      使用post insted of get 提交您的表单

      <fom action="post">
      

      使用 POST 进行破坏性操作,例如创建(我知道这很讽刺)、编辑和删除,因为您无法在浏览器的地址栏中点击 POST 操作。在允许某人调用操作是安全的情况下使用 GET。所以像这样的网址:

      http://myblog.org/admin/posts/delete/357

      应该将您带到确认页面,而不是简单地删除该项目。以这种方式避免事故要容易得多。

      POST 也比 GET 更安全,因为您不会将信息粘贴到 URL 中。因此,使用 GET 作为收集密码或其他敏感信息的 HTML 表单的方法并不是最好的主意。

      最后一点:POST 可以传输比 GET 更多的信息。我不记得每个的确切限制,但优势是显着的。

      【讨论】:

        【解决方案3】:

        在您的表单操作中使用POST 方法而不是GET

        When do you use POST and when do you use GET?

        【讨论】:

          【解决方案4】:

          一般来说,对任何有副作用的请求都使用 POST,例如更新数据库或从注销更改为登录。当您只想检索页面时使用 GET。

          由于 POST 的实现方式,URL 中不会出现任何参数。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-12-20
            • 2016-08-29
            • 1970-01-01
            • 1970-01-01
            • 2011-12-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多