(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),我发现以下内容:
Login 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 个月内没有更新。
【问题讨论】:
【参考方案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 进行身份验证时出现禁止错误