如何从Flex WebService传递Authorization标头?

时间:2009-06-24 20:47:28

标签: flex web-services wsdl authorization

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

简化示例:

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应用程序和服务器位于同一个域中。 我在我的服务器的根目录(http://localhost:8000/crossdomain.xml)中也有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>

谢谢, Zinovii

1 个答案:

答案 0 :(得分:2)

我以前从未在Flex中执行此操作,但您运行的是什么版本的Flash插件?版本9.0.115.0。完全阻止使用该标头,而更高版本允许使用您的crossdomain.xml配置。