У нас действительно странная проблема с частью интеграции Фторина, которую мы создали.
У нас есть форма с капчей на ней;изображение 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 (включая разработчика, который создал код) не могут придумать ни одной причины, по которой это можетбыть.
Есть идеи у кого-нибудь?