2016-03-29 8 views
1

Versuchen, einen neuen Datasnap-Server mit einem einfachen Javascript-Client zu testen. Es funktioniert, bis ich die Autorisierung auf dem Server einschalte, dann bekomme ich 401 Fehler und das onAuthorization Ereignis übergibt keine Benutzernamen oder Kennwörter, die immer leer sind.Delphi Datasnap testet mit Javascript-Client

$(document).ready(function(e) { 

var jsonStr = { 
"ContactName": "smith, anthony", 
"FirstName": "anthony", 
"LastName": "smith" 
    }; 


    function make_base_auth(user, password) { 
var tok = user + ':' + password; 
var hash = btoa(tok); 
return "Basic " + hash; 
    } 

    var userName = "admin"; 
    var password = "admin"; 
    var authStr = convertStringToBase64(userName + ":" + password); 
    var authObj = '{"authentication":authStr}'; 


    $.ajax({ 
url: "http://127.0.0.1:8086/api/services/Customers/RegisterCustomer", 
headers: { 
    "Authorization": make_base_auth(userName, password) 
}, 
beforeSend: function(xhr) { 
    xhr.setRequestHeader("Content-Type", "application/json"); 
    xhr.setRequestHeader("Accept", "application/json"); 
    //xhr.setRequestHeader ("Authorization", make_base_auth (userName, password)); 
}, 
crossDomain: true, 
type: "POST", 
dataType: "json", 
data: JSON.stringify(jsonStr), 

success: function(result, status, jqXHR) { 
    $("preerror").text("IT WORKED"); 
    var jsonStr = result; 
    var jsonObj = JSON.parse(jsonStr); 
    var jsonPretty = JSON.stringify(jsonObj, null, '\t'); 

    $("pre").text(jsonPretty); 
}, 
error(jqXHR, textStatus, errorThrown) { 
    $("pre").text("FAIL"); 
} 
    }); 

}); 
+0

versuchen Standardmethode: URL 'http machen: // username: password @ servername/path ' –

Antwort

0

In Ihrer zitierte Quelle, die Sie verboten (Kommentar gesetzt) ​​Zulassung Teil

//xhr.setRequestHeader ("Authorization", make_base_auth (userName, password)); 

Können Sie echten HTTP-Datenverkehr Protokoll zwischen Client und Server zeigen?

Eigentlich zwei Protokolle - zwischen Server und Arbeit authentifizierten Delphi-Client - und zwischen Server und fehlgeschlagen JS-Client. Dann würde es sein Unterschied gesehen ....

wie https://stackoverflow.com/a/17549592/976391

0

nicht behoben, verbrachte waaaay zu lange versucht, diese zu lösen. Am Ende brauchte ich nur einen Test-Client und bekam einen funktionierenden PHP-Client, der sehr schnell ging. so schien nah noch nie gearbeitet nicht ganz sicher, aber hat genug thanx versuchen, dies sowieso

0

goin zu halten setzen in Webmodul

procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; 
    Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); 
begin 
    Response.SetCustomHeader('access-control-allow-origin','*'); 
    if FServerFunctionInvokerAction <> nil then 
    FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker; 
end;