【问题标题】:How to pass Authorization header from Flex WebService?如何从 Flex WebService 传递授权标头?
【发布时间】:2009-06-24 20:47:27
【问题描述】:

我在服务器上有 WSDL/SOAP 的基本授权机制。如何通过 Flex WebService 发送“授权”标头?

简化示例:

var ws:WebService = new WebService();
ws.wsdl = "http://localhost:8000/api/service.wsdl"

var encoder:Base64Encoder = new Base64Encoder();
encoder.insertNewLines = false;
encoder.encode("SomeUser:SomePassword");

ws.httpHeaders = {AUTHORIZATION : "Basic " + encoder.toString()};

ws.loadWSDL();

var operation:AbstractOperation = ws.get_info;
operation.send();

我得到一个错误:

Error #2096: The HTTP request header AUTHORIZATION cannot be set via ActionScript.

Flex 应用程序和服务器在同一个域中。 我的服务器根目录中也有 crossdomain.xml 文件(http://localhost:8000/crossdomain.xml),但它永远不会被 flex 调用(我从日志文件中知道)。无论如何我都会提供这个文件:

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

谢谢, 齐诺维

【问题讨论】:

    标签: apache-flex web-services wsdl authorization


    【解决方案1】:

    我以前从未在 Flex 中这样做过,但是您运行的是哪个版本的 Flash 插件?版本 9.0.115.0。完全阻止使用该标头,而更高版本允许它与您的 crossdomain.xml 配置一起使用。

    【讨论】:

    • 天啊!我正在使用 Adob​​e Flex builder for linux 在 Ubuntu 上运行这个版本 9.0.115.0。
    • 我仔细检查了这个问题。这就是问题所在。在以后的版本上工作得很好。 flex 没有从服务器调用 crossdomain.xml 的问题也解决了。当您处于 DEBUG 模式时,Flex 不会调用 crossdomain.xml(出于某种奇怪的原因),但是当您 RELEASE 时,它会从服务器调用 crossdomain.xml。
    • 很高兴了解 crossdomain.xml 调试/发布的区别。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2021-07-05
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多