我正在尝试构建一个Delphi XE2 DataSnap Rest服务器,作为第三方API访问我们的DBMS。通过jQuery和AJAX传递DataSnap身份验证凭证
我已经扩展了使用xe2中的其余datasnap向导提供的身份验证和授权提供的示例方法的功能。
我可以确认,我写的所有服务器方法都会传回直接通过浏览器访问的数据。
问题来自于尝试通过$ .ajax()调用向服务器进行身份验证。
从浏览器地址栏访问时,系统会提示您输入用户名和密码,并且当您为两者输入“dev”时,允许您继续。
当将ajax()用户名和密码参数设置为“dev”时,我得到一个HTTP 401响应。
我想我做正确,但这里是代码片段:
$("#contentdiv").click(function(){
$.ajax({
type:"GET",
cache:"false",
username:"dev",
password:"dev",
url:"http://192.168.0.2:8080/datasnap/rest/TServerMethods1/methodname/",
dataType:"jsonp",
statusCode: {
200: function(data){
alert('success ');
}
}
});
});
如果我关掉认证,我能顺利拿到一个HTTP 200响应(虽然在JSON德尔福语法错误DataSnap正在返回,但这是一个不同时间的问题)。
另外,什么是值得了解的 - 如果我手动登录,然后运行ajax,它的工作原理 - 我假设这是因为凭据缓存或一些这样的。
这两种技术相当新颖,所以要温和。 如果我遗漏了一些可能导入的东西,请告诉我,我会在这里解决它。