代码之家  ›  专栏  ›  技术社区  ›  tefozi

如何从FlexWebService传递授权标头?

  •  1
  • tefozi  · 技术社区  · 17 年前

    简化示例:

    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.
    

    我的服务器根目录中还有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>
    

    齐诺维

    1 回复  |  直到 17 年前
        1
  •  2
  •   Jamie Love    17 年前

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

    推荐文章