在一些IE版本中没有提出氟请求

时间:2011-04-15 12:23:39

标签: actionscript-3 internet-explorer-8 amf fluorinefx

我们制作的氟化物集成有一个非常奇怪的问题。

我们有一张带有Captcha的表格; Captcha图像是从名为GetCaptchaImage.ashx的.Net / AMF网络服务中填充的,可以从Flash中的文本超链接重新加载。

在IE的某些版本(特别是IE8,但也可能是其他版本),,无论IE version emulationwmode ,单击文本链接会导致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团队(包括构建代码的开发人员)都没有想到任何可能导致这种情况的原因。正在发生。

任何想法?

1 个答案:

答案 0 :(得分:0)

毕竟,看起来它在Flash的其他地方是个问题,并且浏览器认为有问题的处理程序(/GetCaptchaImage.ashx)没有改变。

所以我们已经解决了缓存设置的问题,而不是需要做很多其他事情。

感谢大家的帮助,特别是Juan Pablo