0

我们在我们的 ASP.NET 应用程序中使用了一个 Flash 上传器,它适用于我们的大多数客户。但是,对于一些在其组织中设置了代理服务器的人来说,上传会间歇性地失败,从而导致崩溃。在调查该问题时,我发现这是由于代理服务器发起的“需要 407 身份验证”请求。当我们尝试切换在 HTTPS 下运行的整个网站时,这个问题似乎得到了解决,但是这在整个应用程序中引发了其他一些 500 错误。作为临时修复,我只为上传组件启用了 HTTPS,使网站在 HTTP 下运行。这似乎解决了现在的问题。

但由于我期待永久修复,我正在考虑在我的 Flash 代码中处理代理异常 (407) 并尝试使用 HTTPS 调用重新发出它(虽然不确定这是否允许)。当我尝试处理 HTTPStatusEvent 时,我使用提琴手正确地得到了异常,但是即使我通过 HTTPS 强制上传请求,也没有进一步的请求。请在下面找到我正在执行的代码示例(ActionScript Flex 3)

_file.addEventListener(HTTPStatusEvent.HTTP_STATUS ,OnHttpError);

私有函数 OnHttpError(event:HTTPStatusEvent):void{ if (event.status==407){ Upload(true); } else{ HandleExceptions("Http 错误:",event.status,""); } this.dispatchEvent(event); } 公共函数上传(enableHttps:Boolean=false):void{ _uploading = true; _bytesUploaded = 0;

        var uploadURLTemp:String = _uploadUrl;
        if(enableHttps==true){
            uploadURLTemp = uploadURLTemp.replace("http://","https://");

        }
        _file.upload(new URLRequest(uploadURLTemp));


    }

_file 对象是一个 FileReference 对象,_uploadURL 是服务器中的上传处理程序 url。我不确定我是否被允许这样做,或者有没有更好的方法来处理这个问题。

任何想法或想法将不胜感激

问候

谢林

4

1 回答 1

0

至于您遇到的错误,我同意这听起来像是后端问题,而不是 Flash 问题。

一般来说,在 flash 中执行 HTTPS 调用最困难的部分是设置和加载 crossdomain.xml 策略。如果您正在进行的这些 https 调用正常工作,那么我假设您已正确配置所有内容。

但是,如果您还没有,这里有很多事情需要考虑:

  • 当通过 HTTP 加载 .SWF 时,在 HTTPS 中联系服务器可能需要 crossdomain.xml
  • 如果您的受保护内容托管在诸如secure.mywebsite.com 之类的子域上,则SWF 可能没有适当的权限(缺少或配置不正确的crossdomain.xml)来访问www.mywebsite.com,反之亦然。

但由于我期待永久修复,我正在考虑在我的 Flash 代码中处理代理异常 (407) 并尝试使用 HTTPS 调用重新发出它(但不确定是否允许这样做)。

只要 SWF 加载了有效且正确配置的 crossdomain.xml 文件,您就可以调用或重新调用 http、https 甚至是套接字连接。

我只是想知道,由于 HTTP 对您来说似乎不稳定,在您解决代理问题之前,简单地使用 https 可能会更容易。

于 2013-08-14T01:40:29.263 回答