首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在某些浏览器上使用AS3 ioError,为什么?

仅在某些浏览器上使用AS3 ioError,为什么?
EN

Stack Overflow用户
提问于 2012-02-08 16:20:55
回答 1查看 1.4K关注 0票数 2

我正在做一个闪光灯,通过url调用google翻译文本到语音服务:

代码语言:javascript
复制
translate.google.com/translate_tts?tl=en&q=example

我让它在firefox中工作,但由于某种原因,它不能在chrome和safari中工作。问题在哪里?

我得到的错误是:

代码语言:javascript
复制
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: http://translate.google.com/translate_tts?tl=en&q=example"]

但是,当我在浏览器中复制/粘贴URL时,它会像它应该返回的那样返回fil。

闪存播放器:

代码语言:javascript
复制
firefox: 10,0,42,34 installed - WORKS
chrome: 11,1,102,55 installed - DOES NOT WORK
safari: 10,0,42,34 installed - DOES NOT WORK

我完全惊呆了。不知道如何进一步调试。

请帮帮忙

更新1:闪存代码

代码语言:javascript
复制
    public function say(text:String, language:String):void {
        var urlString:String = createGoogleTTSUrl(text, language);
        var url:URLRequest = new URLRequest(urlString);
        //var context:SoundLoaderContext = new SoundLoaderContext(1000, true);
        _sound = new Sound();
        _sound.addEventListener(Event.COMPLETE, loadComplete);
        _sound.addEventListener(ErrorEvent.ERROR, err);
        _sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler2);
        _soundChannel = new SoundChannel();
        _sound.load(url); //, context);
    }
 private function ioErrorHandler2(event:IOErrorEvent):void {
        trace(event);
 }

我后来才删除了SoundLoaderContext,但这并没有改变任何事情。

更新2:其他有相同问题的人:

本教程也有同样的问题。工作于FF,但不适用于Chrome或Safari。报告类似错误的注释中的人员(单击演示按钮:) http://active.tutsplus.com/freebies/exclusive/exclusive-freebie-text-to-speech-utility/

EN

回答 1

Stack Overflow用户

发布于 2012-02-08 17:36:47

当嗅探实际的请求和响应时,出现#2032错误的明显原因是Google在Chrome或IE中从Flash调用404 (还没有测试Safari或Opera)。但是为什么它会返回404呢?

不是一个解决方案,而是一些疑难解答-火狐在请求方面与其他浏览器有什么不同?在下面的文章中,ChD = "Chrome不使用Flash直接调用API (这是可行的)“

接受

FF:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

总干事:Accept: */*

IE:Accept: */*

ChD:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

可能是这样,但似乎不太可能。这两个工作的发送不仅仅是一个通配符Accept头。

用户-代理

显然,每个浏览器都会发送不同的用户代理。除了ChD发送的内容与Ch -和以前的工作相同,所以不是这样的。

Referer

火狐不发送任何参考。其他人发送:

代码语言:javascript
复制
Referer: http://activetuts.s3.amazonaws.com/freebies/006_textToSpeech/tutorial/text2speech.swf

ChD显然也没有发送任何引用程序,因为我手动输入了地址。因此,Referer头可能是问题所在。

考虑到TTS不是一个公共API,而是一个私有端点(对于Google自己的翻译服务),也就是不允许使用的端点,这并不令人惊讶。

其他

除此之外,还有一些语言接受细节(+ cookie内容--同一组cookie被发送--在我的机器上,这实际上是他们自己的一次cookie-- Flash在Firefox插件中从IE发送cookie时遇到了问题).除此之外,请求是相同的,但只有Firefox的请求才不会在我的机器上产生404。

FlashPlayer版本

FF:11.0.1.152 Debug

总干事:11.1.102.55

IE:11.0.1.152 Debug

更新: IE也会发送Flash:x-flash-version: 11,0,1,152 --但是其他浏览器都没有,所以这不是它们不能工作的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9197279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档