Safari 3.2.1 отправляет POST и GET-запросы - PullRequest
1 голос
/ 29 декабря 2008

У меня есть сервлет, работающий на Tomcat 5.5.27 и 5.5.26, и у меня есть веб-форма с методом POST. Если я использую Safari 3.2.1, я вижу из журналов, что Tomcat получает POST, за которым немедленно / временно следует GET, и это не удается. Если я использую Firefox 3.0.5, я вижу, что он отправляет только POST, и все работает.

Пытаясь отладить Eclipse, я вижу, что при использовании Safari вызывается метод doGet (), а при использовании Firefox используется doPost ().

Практически кажется, что Safari запускает как POST, так и сразу GET, в то время как Firefox запускает только POST (как и должно быть в соответствии с формой HTML).

Есть ли кто-нибудь еще, кто испытал это? В этом случае есть решение?

Вот фрагмент HTML-формы:

<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>

Ответы [ 4 ]

1 голос
/ 22 февраля 2011

Я думаю, у вас есть тег изображения с пустым источником.

0 голосов
/ 29 декабря 2008

Я не уверен, что происходит, но я знаю, что вам нужно предоставить больше информации.

Возможно, он отправляет GET для связанных ресурсов (например, изображений), тогда как Firefox хранит их в кэше, или у вас есть кнопка отправки формы, например, внутри тега .

Другой альтернативой является несовместимость Javascript, если вы отправляете что-то через Javascript.

Наблюдайте за трафиком (проверьте Fiddler или Wireshark ) и посмотрите, что Safari пытается получить и что такое POSTing

0 голосов
/ 30 декабря 2008

Я довольно озадачен поведением Safari, поскольку напоминаю, что когда-то это работало. Я боюсь, что одно из последних обновлений что-то сломало.

Использование HTTPScoop Я видел, что, по-видимому, Safari запускает POST и GET, когда получает ответ. Однако я думаю, что он фактически запускает оба запроса одновременно, поскольку дата + время обоих ответов одинаковы как для POST, так и для GET.

Ответ представляет собой ленту RSS и содержит код ОК HTTP / 1.1 200. Второй GET запрашивает тот же URL-адрес запроса (http://127.0.0.1:8180/vidisearch/Search) от POST, но тело составляет 0 байтов, у него, конечно, нет параметров GET, и ответ неправильный из-за отсутствующих параметров.

Вместо этого Firefox запускает только POST и получает правильный ответ.

0 голосов
/ 29 декабря 2008

Трудно сказать, не видя HTML-код формы, но, возможно, ваша кнопка отправки обернута ссылкой, и Safari одновременно отправляет форму и по ссылке (через GET).

...