Мы используем тег динамического сценария с механизмом JsonP для выполнения междоменных вызовов Ajax. Внешний виджет очень прост. Он просто вызывает поисковый веб-сервис, передавая критерии поиска, предоставленные пользователем, и получая и динамически отображая результаты.
Примечание - Для тех, кто не знаком с меткой динамического сценария с JsonP для выполнения Ajax-подобных запросов к службе, возвращающей данные в формате Json, я могу объяснить, как использовать ее, если вы думаю, что это может иметь отношение к проблеме.
Служба WCF размещена на IIS. Это Restful, поэтому первое, что мы делаем, когда пользователь нажимает кнопку поиска, - это генерируем URL, содержащий критерии. Похоже на это ...
HTTPS: //.../service.svc критерии = джон + кузнец
Затем мы используем динамически созданный HTML-тег сценария с атрибутом источника, установленным на вышеуказанный URL-адрес, для отправки запроса в наш сервис. Результат возвращается, и мы обрабатываем его, чтобы показать результаты.
Все это прекрасно работает, но мы заметили, что при использовании IE служба получает запрос от клиента Дважды . Я использовал Fiddler для отслеживания трафика, покидающего браузер, и, конечно же, я вижу два запроса со следующими URL-адресами ...
Второй запрос был дополнен каким-то идентификатором. Этот идентификатор отличается для каждого запроса.
Я сразу подумал, что это как-то связано с кэшированием. Добавление случайного числа в конец URL-адреса является одним из классических подходов к отключению кэширования браузера. Чтобы доказать это, я изменил настройки кеша в IE.
Я установил для «Проверять наличие новых версий сохраненных страниц» значение «Никогда» - каждый раз выполнялся только один запрос. Один со случайным числом на конце.
Я установил для этого значения по умолчанию значение «Автоматически», и запросы сразу же начали отправляться дважды.
Интересно, что я не получаю оба запроса от клиента. Я нашел эту ссылку , где кто-то предполагает, что это может быть ошибкой в IE. Тот факт, что это не происходит для меня в Firefox, подтверждает эту теорию.
- Кто-нибудь может подтвердить, если это ошибка в IE? Это может быть дизайн.
- Кто-нибудь знает, как я могу остановить это?
Некоторые из более расплывчатых поисков, которые будут выполнять мои пользователи, занимают достаточно ресурсов обработки, чтобы сделать дублирование чего-либо очень плохой идеей. Я действительно хочу избежать этого, если это вообще возможно: -)