Express服务器不对iOS客户端进行身份验证(React / Axios)

时间:2019-12-23 15:09:20

标签: ios reactjs authentication jwt

我有一个React App,它向https://api.backend.com/处的后端发送请求(地址已更改)。后端是运行打字稿和表达的节点服务器。中间件包括标准的内容,例如人体分析器,multer。对于Auth,我们从正文中获取一个jwt并使用jwt对其进行验证。 CORS已禁用。

当前,我们正在向/auth发送用户名和密码,并收到JWT作为响应。然后,将JWT存储为cookie。这条路线上没有其他事情。

为确保授权用户访问应用程序路由,我们有一个登录路由,该路由向/userInformation发出请求,发送jwt。 jwt已在服务器上验证,解析并保存在react上下文中。因此,如果我的上下文中包含jwt,则该用户已获得授权。

这在除iOS设备之外的所有设备上都能正常工作。在iOS上,/auth按预期发送jwt。但是,当尝试通过登录路径时,我在iPad上收到此错误:

Authorization response error: {"message":"Network Error","name":"Error","stack":"createError@http://192.168.1.82:3000/static/js/1.chunk.js:61509:24\nhandleError@http://192.168.1.82:3000/static/js/1.chunk.js:61052:25","config":{"url":"https://<BACKEND>/getUserInformation","method":"post","data":"{\"sessionID\":\"<MY JWT HERE>"}","headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json;charset=utf-8"},"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1}}

我可以在服务器上看到它在请求中具有正确的数据(jwt)并进行了验证(其他设备以相同的方式登录)。没有引发任何错误。如果我禁用了允许我进入的登录路由,则我的应用程序中的所有其他axios请求都可以在iOS上运行。服务器似乎正在发送成功响应(必须正确设置上下文,因为所有其他路由都可以使用),但是iOS设备会收到网络错误。

有趣的是,如果我将chrome上的用户代理更改为iOS,则身份验证有效。经过测试,无法在iPhone Safari,iPad Safari(13.2)和iPad Chrome上使用。

我感觉这与后端运行的apache服务器有关。我用几乎原始的配置来设置它,因为我不是一个真正的好服务器管理员。因此,如果这可能与服务器有关,请告诉我如何对其进行故障排除。

我对此进行了广泛的研究,但找不到任何存在相同问题的人,因此能提供任何帮助。

React native axios ios not authenticating against apache/php我没有发送任何精美的标题,只是正文中的jwt。与其他路线一样,由apache正确处理。斜杠不会改变任何东西。我没有运行Django。

不应有任何飞行前请求,因为请求是跨源的。

我知道在体内发送凭据不是最佳做法,但这是问题吗?我们仍在开发中,因此安全认证不是主要问题。

0 个答案:

没有答案