【问题标题】:Safari 3.2.1 sends POST followed by GET requestsSafari 3.2.1 发送 POST 后跟 GET 请求
【发布时间】:2008-12-29 18:18:12
【问题描述】:

我有一个在 Tomcat 5.5.27 和 5.5.26 上运行的 servlet,并且有一个带有 POST 方法的 Web 表单。 如果我使用 Safari 3.2.1,我会从日志中看到 Tomcat 收到一个 POST 后立即/同时是 GET 并且它失败了。 如果我使用 Firefox 3.0.5,我发现它只发送 POST 并且一切正常。

尝试使用 Eclipse 进行调试,我看到使用 Safari 时调用的是 doGet() 方法,而使用 Firefox 时调用的是 doPost()。

实际上,Safari 似乎同时触发 POST,然后立即 GET,而 Firefox 只触发 POST(根据 HTML 表单应该如此)。

还有其他人经历过这种情况吗?这种情况有解决办法吗?

这是 HTML 表单的 sn-p:

<form action="/vidisearch/Search" method="post" name="SearchForm" id="SearchForm">
    <div class="input required">
    <label for="Concepts">Concepts, comma separated<br />
    ex. (remove quotes) &quot;man-made object, cemetery, graphic event, atmospheric event, tool event&quot;</label>
    <input name="concepts" type="text" value="" id="concepts" />
    </div>

    <div class="input required">
    <label for="Operators">Operators, comma separated<br />
    ex. (remove quotes) &quot;NOT, AND, OR, AND, AND&quot;</label>
    <input type="text" name="operators" value="" id="operators" />
    </div>

    <div class="input required">
    <label for="Specializations">Specializations, comma separated<br />
    ex. (remove quotes) &quot;true, false, false, true, false&quot;</label>
    <input type="text" name="specializations" value="" id="specializations" />
    </div>

    <div class="input required">
    <label for="Results">Various parameters</label>
    <table width="100%" border="0" style="border: 0;">
    <tr>
    <td>Ontology ID<br />
    <input name="ontologyID" type="text" id="ontologyID" value="" /></td>
    <td>Result page<br />
    <input name="page" type="text" id="page" value="0" /></td>
    <td>Shots per page<br />
    <input name="shotsPerPage" type="text" id="shotsPerPage" value="20" /></td>
    <td>New search<br />
    <input name="newSearch" type="text" id="newSearch" value="true" /></td></tr>
    </table>
    </div>

    <div class="submit"><input type="submit" value="Search" /></div>
</form>

【问题讨论】:

    标签: forms post safari get tomcat5.5


    【解决方案1】:

    我认为您的图片标签的 src 为空。

    【讨论】:

      【解决方案2】:

      如果没有看到表单的 HTML,很难说,但也许您的提交按钮是用链接包裹的,而 Safari 既在发布表单 并且 在链接之后(通过 GET)。

      【讨论】:

      【解决方案3】:

      我不确定发生了什么,但我知道您需要提供更多信息。

      也许它正在为相关资源(如图像)发送 GET,而 Firefox 将它们保存在缓存中,或者您在 标记内有表单提交按钮,例如。

      另一种选择是 Javascript 不兼容,以防您通过 Javascript 提交内容。

      嗅探流量(查看FiddlerWireshark)并查看Safari 尝试获取什么以及发布什么

      【讨论】:

      • 我会试试 Wireshark。无论如何 GET 是由 Tomcat 记录的,所以我认为它正在获取 servlet。反正我要去看看。
      • 我没有使用任何 Javascript 并且按钮不在 链接内。
      【解决方案4】:

      我对 Safari 的行为感到非常困惑,因为我曾提醒过它在前一段时间有效。我担心最新的升级之一已经破坏了一些东西。

      使用HTTPScoop 我看到Safari 在收到响应时显然会触发POST,然后触发GET。但是我认为它实际上同时触发了两个请求,因为两个响应的日期+时间对于 POST 和 GET 都是相同的。

      响应是一个 RSS 提要,并具有 HTTP/1.1 200 OK 代码。第二个 GET 请求与 POST 相同的请求 URL (http://127.0.0.1:8180/vidisearch/Search) 但正文是 0 字节,它当然没有 GET 参数,并且由于缺少参数,答案是错误的。

      Firefox 只触发 POST 并获得正确答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 2012-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多