【问题标题】:Flex WebService POST changes https to httpFlex WebService POST 将 https 更改为 http
【发布时间】:2013-04-04 18:41:23
【问题描述】:

我有一个需要连接到 https 网络服务的 Flex 应用程序。 Web 服务 WSDL URL 以 wsdl-url.company.com 的形式给出,其中使用了 SSL 卸载。

Flex 应用程序与 Web 服务驻留在同一台服务器上。

在mxml中定义的web服务为

<s:WebService id="webService" wsdl="https://wsdl-url.company.com/service.asmx?wsdl">

服务器根目录下的crossdomain.xml文件是

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM /xml/dtds/cross-domain-policy.dtd> 
<cross-domain-policy> 
<site-control permitted-cross-domain-policies="all"/> 
<allow-access-from domain="*" to-ports="*" /> 
<allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy>

如果从 HTTPS 地址加载 swf,则在页面加载(Web 服务初始化)时,swf 不会请求 crossdomain.xml,但是当调用 Web 服务时,会尝试对 http 等效项而不是 https .

即使用 Firebug,我看到 Flex 正在执行 POST 到 ,这应该是 HTTPS。为什么 Flex 声明为 https 时将其更改为 http?

另一方面,如果在同一台服务器上从 HTTP 加载 swf,则会下载 crossdomain.xml,但 Flash 调试器会抛出“Channel.Security.Error”,并且当 Web 服务尝试时应用程序崩溃进行初始化。

非常感谢任何解决此问题的帮助。

【问题讨论】:

  • 向我们展示您实际执行帖子的代码。与 SWF 加载相关的“Web 服务初始化”如何?在代码对域进行服务调用之前,SWF 不会请求 crossdomain.xml 文件。
  • 使用上面显示的 s:WebService 标记声明 Web 服务,并在加载 swf 后立即初始化。此时会抛出 Channel.Security.Error(如果我通过 HTTP URL 加载 swf)。如果我通过 HTTPS URL 加载 swf,则不存在此问题,但是对 Web 服务的任何调用都会导致 Flash 将 http 放置到声明的 Web 服务而不是 https。调用 Web 服务的代码是 webService.Authenticate(USERNAME, PASSWORD),添加 SOAP 标头后。

标签: web-services apache-flex https wsdl crossdomain.xml


【解决方案1】:

找到解决方案

对于遇到相同问题的任何人,问题出在项目 .fml 中的 WSDL 端点。尽管我在 WebService 声明中将服务设置为 https://,但 Flash Builder 默认将 WSDL-endpoint 生成为 http。 在加载应用程序时以编程方式将端点正确设置为 https 就可以了:

webService.endpointURI = "https://wsdl-url.company.com/service.asmx";

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 1970-01-01
    • 2018-05-22
    • 2015-01-21
    • 1970-01-01
    • 2020-11-18
    • 2018-03-08
    • 2014-10-26
    • 2021-11-13
    相关资源
    最近更新 更多