【问题标题】:Can I make an Ajax JQuery POST request with Ionic?我可以使用 Ionic 发出 Ajax JQuery POST 请求吗?
【发布时间】:2018-12-25 08:46:27
【问题描述】:

我想从 Ionic 应用程序进行 NTLM 身份验证。使用邮递员(一种测试请求的工具),我能够进行此身份验证,并且效果很好(使用 NTLM 身份验证选项)。

但是,postman 没有提供任何代码来在 Angular (For Ionic) 中实现这个请求。

经过自己的研究,我发现Angular 2 及以上版本不支持NTLM 身份验证。真的是这样吗?

所以我想用 Jquery 和下面的代码(由邮递员生成)生成我的请求。 但它可以与 Ionic 一起使用吗?

这里是 Postman 为这个请求生成的 JQuery Ajax 实现:

var form = new FormData();
form.append("Login", "yakeri");
form.append("Password", "elcimai77");

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://myserver.com/MyService",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Postman-Token": "50392b83-879b-43cb-ba2e-0b5ffc61e2f8"
  },
  "processData": false,
  "contentType": false,
  "mimeType": "multipart/form-data",
  "data": form
}

$.ajax(settings).done(function (response) {
  console.log(response);
}); 

【问题讨论】:

  • 检查this link 看看是否有帮助。
  • NTLM 支持与浏览器有关,与您使用的任何 JS 库无关。是什么让您认为 Angular 特别不支持它?所有这些库——jQuery、Angular 等只是浏览器实现 JavaScript 能力之上的语法糖。就 ajax 而言,它们都只是在流程结束时将您的代码转换为原生 XHR 请求。在那些框架中,你无法做任何通过编写 vanilla JavaScript 无法做到的事情。
  • 关于第二个问题,任何HTTP服务器都可以接收HTTP请求,无论是通过AJAX生成的、普通的浏览器请求,还是其他工具如Postman或您自己定制的HTTP客户端,或其他什么,这无关紧要。至于 Ionic,它只是一个代码框架。在这种特殊情况下,NTLM 支持将成为 Web 服务器本身的一部分,而不是本身运行在另一个框架之上的代码框架。
  • 如果你不使用 IIS 作为你的网络服务器,NTLM 支持将会很薄弱,我不清楚你为什么要开始使用新的东西 -这是旧技术。微软自己在几年前就开始偏爱 Kerberos,而在 Windows 世界之外,很少有人采用它。如果您想要一个现代的、跨平台的身份验证系统,请尝试使用 OAuth 之类的东西,其中已经存在您可以利用的知名、强大的实现。
  • 另一个令人困惑的事情...var form = new FormData(); form.append("Login", "yakeri"); form.append("Password", "elcimai77"); 在您的请求数据中。所以...如果您在请求中提供用户名和密码,这意味着某种基于表单的身份验证系统?在那种情况下,您为什么还需要/想要 NTLM?没有意义。

标签: javascript jquery ajax angular ionic-framework


【解决方案1】:

最后,我发现了。邮递员的 javascript 代码不起作用,所以我只是在 Angular 中发出了一个简单的 POST 请求,并使用http://username:password@myserver.com 作为网址。现在完美运行!

参考:Authenticate Windows Authentication using Javascript

此外,为了帮助可能处于相同情况并在使用 ionic serve 时遇到 CORS 问题的人,只需在 chrome 中禁用 chrome 网络安全。在真实设备上使用 CORS 应该没有任何问题。

感谢您的帮助

【讨论】:

    猜你喜欢
    • 2013-10-22
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多