我构建了一个使用令牌进行授权的应用。用户登录并从后端获取令牌。该令牌存储在浏览器中的localStorage中,然后用于API的每次后续调用。如果令牌不存在或令牌错误,则使用401 - Unauthorized。
拒绝呼叫这在我的桌面浏览器上完美运行,但当我尝试在我的iPhone上使用它时,一堆电话被拒绝为401 - 未经授权 - 但并非全部被拒绝。我将手机连接到我的笔记本电脑上以进行Safari远程调试,我可以确认令牌位于本地存储中,这是正确的令牌。
但似乎有一种模式。我可以通过手机更新现有条目,但我无法通过手机创建新条目 - 这些条目将被拒绝为401.
我是否遗漏了Vue如何在移动设备上处理localStorage?有没有理由说它不能像在浏览器上那样在iPhone上运行?
我很难过......
答案 0 :(得分:0)
不,是简短的回答。首先是让Vue摆脱循环。 Vue不会访问本地存储,你的js会这样做。我能想到的唯一的Iphone问题是主屏幕上安装的应用程序不与safari共享其上下文。我不认为这是你的问题。我真的怀疑这与localStorage有什么关系。
有很多方法可以检查char,char,发送给你的api-safari dev工具的请求,fiddler。抓取请求标头。特别注意大写或空白的任何差异,尤其是Auth标题。问题是在某处盯着你看。
答案 1 :(得分:0)
<强>解强>
事实证明我的应用程序中的一些URL
有斜杠,而有些则没有。在我的手机上,不的URL
有一个尾部斜线会失败,但在我的桌面上运行正常。我查看了所有代码,并在各处添加了斜杠,现在一切正常。
var url = 'projects' <- works on desktop, returns 401 on phone
var url = 'projects/' <- works on desktop AND phone