【问题标题】:(Monaca, Cordova) Web API request with form authentication (Cookie) not working(Monaca,Cordova)带有表单身份验证(Cookie)的 Web API 请求不起作用
【发布时间】:2020-05-15 15:34:39
【问题描述】:

我有一个关于我的应用程序和 Web API 发布的问题。 问题还没有解决,需要你的帮助!

规格

应用程序

  • 该应用使用 Monaca 构建(https://monaca.io/,基于 Cordova、HTML / JavaScript / CSS),
  • 使用 jQuery(版本 3.4.1)ajax 方法调用 Web API。
  • 应用首先需要登录 API,使用 cookie 获取凭据,然后使用凭据调用其他 Web API 的其他请求。

网络 API

  • 由 ASP.NET MVC (C#) 构建,并在 Microsoft Azure(应用服务)上托管。
  • 如果请求中的 ID 和密码正确,登录端点会返回凭据。
  • 其他 API 端点需要使用代码“[Authorize]”进行授权。

问题详情

即使登录请求成功,下一个 API 调用也会返回错误(401 Unauthorized)。 此问题已于 2020 年 1 月 24 日报告,甚至现在。

跟踪数据(使用 Charles Proxy),我发现以下内容:

  • Lo​​gin endpint 返回凭据(Set-Cookie: xxxx)。
  • 在应用程序上,登录后的 API 调用不会发送“Cookie”凭据。

并非所有受支持的设备都出现此问题(iOS 和 Android 以及最新版本的 webview)

  • Google Pixel 3a (Android 10):调用失败
  • 摩托罗拉 Moto X4 (Android 9):失败
  • 华为(Android 6):失败
  • iPhone SE (iOS 12.4):失败
  • iPhone 6 Plus (iOS 10.2.1):调用成功

应用和 Web API 至少在过去 3 个月内没有更新。

【问题讨论】:

    标签: android ios cordova asp.net-web-api monaca


    【解决方案1】:

    我解决了这个问题。问题出在服务器端(Azure 上的 Web API)。

    公告:Azure 应用服务上的 SameSite Cookie 处理和 .NET Framework 4.7.2 补丁可用性 - 微软问答(预览版)
    https://docs.microsoft.com/answers/questions/6842/announcement-samesite-cookie-handling-and-net-fram.html

    Web API 是在 Azure 应用服务上使用 ASP.NET MVC 4.5 构建的。 2020年1月,在Azure上安装了一个新服务,然后Web API出现错误。

    根据上面页面的指导,问题已经解决了。

    (我找不到 API 在测试机 iPhone 6 Plus、iOS 10.2.1 上运行良好的原因。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多