(Monaca,Cordova)带有表单身份验证(Cookie)的 Web API 请求不起作用

Posted

技术标签:

【中文标题】(Monaca,Cordova)带有表单身份验证(Cookie)的 Web API 请求不起作用【英文标题】:(Monaca, Cordova) Web API request with form authentication (Cookie) not working 【发布时间】: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”凭据。

并非所有受支持的设备都出现此问题(iosandroid 以及最新版本的 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 个月内没有更新。

【问题讨论】:

【参考方案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 上运行良好的原因。)

【讨论】:

以上是关于(Monaca,Cordova)带有表单身份验证(Cookie)的 Web API 请求不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当 cordova-plugin-local-notification 尝试播放 mp3 文件时,Monaca Android 应用程序崩溃

带有 Spotify iOS SDK 的 Cordova iOS - 触发身份验证

403.60 - 使用 Azure 移动应用对 Cordova 进行身份验证时出现禁止错误

带有 XML 文件的身份验证表单

在 SAFARI 中使用带有表单身份验证的 HTML5 音频

带有内置登录视图和身份验证表单的 Django “记住我”