我有一个 web 应用程序,它通过 REST APi 女巫使用用户 ID 和 session token 响应进行身份验证,它将与 future 的 ajax 请求一起作为 API 安全端点的授权基本 header 发送。这适用于所有浏览器,包括 iOS Safari。在 iOS (iPad) 上,当我使用 apple-mobile-web-app-capable 元标记并将该应用程序添加到主屏幕时,问题就来了:登录后,即使我的授权 header 存在(在网络检查器中查看)我 mac 上的网络请求选项卡)当发送第一个安全调用时,我收到 safari 需要身份验证弹出窗口,要求我输入密码。
header 通过 ajaxSetup beforeSend
属性设置:
xhr.setRequestHeader("Authorization", "Basic " + base64Value)
同样,在所有浏览器上一切都很好,IOS Safari 应用程序和主页按钮模式都可以,但是当使用 meta: apple-mobile-web-app-capable 时,身份验证机制被破坏了。
我确实搜索了很多,但还没有找到解决方案。
最佳答案
我的问题现在已经解决了。 Ajax POST 请求在 Safari IOS 6 上被缓存,即使我清理缓存和 cookie,之前缓存的请求也会卡在某个地方。我在另一个 ajax 调用中遇到了相关问题,但我们通过在 REST 拦截器中添加无缓存 header 来解决它,但由于某种原因,对我们 API 的登录调用仍在使用缓存响应(旧 session token ),但仅在 WEB 中有能力的模式。在 LOGIN url 的末尾添加时间戳可以解决该问题。
我仍然不明白为什么特定请求永远不会从仅支持 WEB 模式的历史记录/cookie 中清除......
关于iOS Webapp 作为主页按钮 : Authentication Header sent with ajax stop working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12954295/