Запрос на фтор не выполняется в некоторых версиях IE - PullRequest
0 голосов
/ 15 апреля 2011

У нас действительно странная проблема с частью интеграции Фторина, которую мы создали.

У нас есть форма с капчей на ней;изображение Captcha заполняется из веб-службы .Net / AMF с изобретательским названием GetCaptchaImage.ashx и может быть перезагружено из текстовой гиперссылки во Flash.

В некоторых версиях IE (в частности, IE8, но также могут быть и другие).), независимо от эмуляции версии IE и wmode , нажатие текстовой ссылки приводит к успешному выполнению HTTP-вызова к нашему шлюзу Fluorine, но к вызовувеб-сервис не следует за этим.Изучая транзакции HTTP с Microsoft Fiddler , мы видим:

POST http://www.domain.com/gateway.aspx
200 OK (application/x-amf)

и ничего больше, тогда как в любом другом браузере мы видим:

POST http://www.domain.com/gateway.aspx
200 OK (application/x-amf)
GET http://www.domain.com/GetCaptchaImage.ashx
200 OK (image/gif)

Код, которыйделает вызов, кажется, унаследованным, без переопределения, от org.osflash.signals.Signal.dispatch, поэтому я не могу понять, почему это не было бы просто Bloody Work ™.Фактический вызов метода выглядит так:

private function getNewCaptcha(event:MouseEvent):void
{
    getCaptchaAgain.dispatch();
    trace("Captcha button click");
    GlobalDebugger.log(this, "Captcha button click!");
}

, где единственными другими упоминаниями getCaptchaAgain во всей кодовой базе являются:

public var getCaptchaAgain:Signal = new Signal();

и

compForm.getCaptchaAgain.add(getTheCaptchaAgain);

иединственное другое вхождение getNewCaptcha - это строка:

_cantReadCaptchaButton.addEventListener(MouseEvent.CLICK, getNewCaptcha);

Редактировать: Хуан Пабло Калифано указал, что я не заметил, чтоссылка на getTheCaptchaAgain, которую я бы неправильно прочитал как getCaptchaAgain.Он определяется как

private function getTheCaptchaAgain():void
{
    captchaSignal.dispatch();
}

и вызывается только с onFormResponse, где это неинтересно.captchaSignal определено в

public class CompetitionFormMediator extends AbstractFactoryAccessorMediator
{
    [Inject]
    public var captchaSignal:CaptchaSignal;
    // ...
}

*, 1049 * расширяется org.osflash.signals.Signal и неинтересно, но вызывается в виде строки:

signalCommandMap.mapSignalClass(CaptchaSignal, CaptchaCommand);

CaptchaCommand расширяется SignalCommand изаканчивается внутри flash.events.EventDispatcher, вызывая

var callFunction:Function = serviceHub.call;
callFunction.apply(serviceHub, collectArgs);

, где collectArgs - это Array аргументов, которые не дают никаких подсказок.

Окончание редактирования

У кого-нибудь есть идеи, почему второй вызов не поступил бы на веб-сервер?Я не могу понять, почему Flash не будет выдавать HTTP GET, но я также не могу представить себе причину, по которой браузер (не говоря уже об этом браузере) будет его подавлять.Я не являюсь разработчиком Flash (я управляю командой .Net здесь), но я не вижу там ничего странного, и ни я, ни команда Flash (включая разработчика, который создал код) не могут придумать ни одной причины, по которой это можетбыть.

Есть идеи у кого-нибудь?

1 Ответ

0 голосов
/ 18 апреля 2011

После всего этого, похоже, что это была проблема в другом месте Flash, и рассматриваемый обработчик (/GetCaptchaImage.ashx) считался браузером неизменным.

Итак, мы решили проблему с настройками кэширования, вместо того, чтобы делать что-то еще.

Спасибо за вашу помощь всем, особенно Хуан Пабло !

...