Come passare l'intestazione di autorizzazione da Flex WebService?
-
22-07-2019 - |
Domanda
Ho un meccanismo di autorizzazione di base sul server per WSDL / SOAP. Come posso inviare " Autorizzazione " intestazione tramite Flex WebService?
Esempio semplificato:
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();
E visualizzo un errore:
Error #2096: The HTTP request header AUTHORIZATION cannot be set via ActionScript.
L'applicazione Flex e il server si trovano nello stesso dominio. Inoltre ho il file crossdomain.xml nella radice del mio server ( http: // localhost: 8000 / crossdomain.xml ) ma non viene mai chiamato da flex (lo so dai file di registro). Fornirò comunque questo file:
<?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>
Grazie, Zinovii
Soluzione
Non ho mai dovuto farlo prima in Flex, ma quale versione del plugin Flash stai utilizzando? Versione 9.0.115.0. blocca completamente l'uso di quell'intestazione, mentre le versioni successive lo consentono con la tua configurazione crossdomain.xml.