我们制作的氟化物集成有一个非常奇怪的问题。
我们有一张带有Captcha的表格; Captcha图像是从名为GetCaptchaImage.ashx
的.Net / AMF网络服务中填充的,可以从Flash中的文本超链接重新加载。
在IE的某些版本(特别是IE8,但也可能是其他版本),,无论IE version emulation和wmode ,单击文本链接会导致HTTP调用我们的Fluorine网关已成功制作,但对网络服务的调用并没有遵循它。使用Microsoft Fiddler检查HTTP事务,我们看到:
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
继承的,没有任何覆盖,所以我看不出为什么它不会Just 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);
修改: Juan Pablo Califano我发现我没有注意到有getTheCaptchaAgain
的引用,我将其误读为getCaptchaAgain
。它被定义为
private function getTheCaptchaAgain():void
{
captchaSignal.dispatch();
}
并且仅从onFormResponse
调用,在那里它无趣。 <{1}}在
captchaSignal
public class CompetitionFormMediator extends AbstractFactoryAccessorMediator
{
[Inject]
public var captchaSignal:CaptchaSignal;
// ...
}
扩展CaptchaSignal
并且无趣,但会在一行中被调用:
org.osflash.signals.Signal
signalCommandMap.mapSignalClass(CaptchaSignal, CaptchaCommand);
扩展CaptchaCommand
并最终在SignalCommand
内部调用
flash.events.EventDispatcher
其中var callFunction:Function = serviceHub.call;
callFunction.apply(serviceHub, collectArgs);
是collectArgs
个参数,不提供任何线索。
结束修改
有没有人知道为什么第二次通话不会进入网络服务器?我不明白为什么Flash不会发布HTTP Array
,但同样地,我也想不出为什么浏览器(更不用说这个浏览器)会抑制它的任何原因。我不是Flash开发人员(我在这里运行.Net团队),但我看不出有什么奇怪的事情,我和Flash团队(包括构建代码的开发人员)都没有想到任何可能导致这种情况的原因。正在发生。
任何想法?
答案 0 :(得分:0)
毕竟,看起来它在Flash的其他地方是个问题,并且浏览器认为有问题的处理程序(/GetCaptchaImage.ashx
)没有改变。
所以我们已经解决了缓存设置的问题,而不是需要做很多其他事情。
感谢大家的帮助,特别是Juan Pablo!