【问题标题】:Flex web application works fine before compilingFlex Web 应用程序在编译之前工作正常
【发布时间】:2012-04-30 14:49:15
【问题描述】:

我在 Flex 中创建了一个组件,当用户输入一个条目时,它会自动完成几个文本输入。从 Flex 运行应用程序时,一切正常。但是,在我编译并加载应用程序后,自动完成功能不起作用。以下是一些背景信息。

  • 在 Adob​​e Flash Builder 4.5 中创建。
  • Web 应用程序正在内部网络上运行。
  • 自动完成使用的服务是外部服务。
  • 承载 Web 应用程序的内部服务器可以正常加载外部服务的 URL。

我不确定这是权限问题还是什么。任何见解将不胜感激。

【问题讨论】:

  • “当从 Flex 运行应用程序时”我不确定这是什么意思。不编译就不可能测试应用程序。您的意思是从 Flash Builder 启动应用程序时它工作正常;但不是当你把它放在网络服务器上?还是你的意思是别的?如果您对自动完成数据使用外部服务;您是否有一个跨域文件允许 Flex 在从不同的 Web 服务器提供服务时调用远程服务?使用“硬盘 URL”在浏览器中加载已编译的 SWF 将绕过跨域安全限制。
  • 对不起,不清楚。是的,我应该说从 Flex 启动 Web 应用程序时一切正常。我确实有一个跨域文件,该文件设置为允许从任何请求标头和任何域进行访问。
  • 您是否收到任何错误消息或什么也没有?服务器的响应是什么?也许您可以使用像 Charles 这样的代理来查看响应是什么(或者也许 FireBug 的“网络”面板已经可以做到这一点)。
  • 没有错误信息。使用 Fiddler2 可以跨域文件进行通信,并且没有错误报告。我开始怀疑是否需要编辑跨域文件...
  • 如果您的跨域文件出错,则服务器应该返回一个错误。要么找不到文件本身,服务器将返回 404,要么配置不正确,在这种情况下您应该收到安全错误。调用服务器时是否监听错误事件?

标签: apache-flex compilation


【解决方案1】:

我在从 Web 服务接收数据时遇到了类似的问题。如果跨域文件不在应有的位置 (webservice.domain.com/crossdomain.xml),您将收到 404 错误。所以听起来这不是你的问题。但是,如果您的跨域文件不包含正确的标签,它不会引发 HTTP 错误,但它仍然无法正常工作。

如果您从 HTTP 服务器(您的应用程序所在的位置)转到 HTTPS 服务器(您的服务所在的位置),默认情况下它不会正常工作。这通常是一种不好的安全做法,但如果您认为它没问题,您可以将 secure="false" 用于 allow-access-from 标记。

此外,您可能需要同时包含 allow-access-from 标记和 allow-http-request-headers-from 标记以获取您要查找的数据。

这是 Adob​​e 的跨域策略文件规范,它是确定每个标签所需属性的好资源:http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多