在 React 中使用 Safari 而不是 Chrome 接收 401 状态

问题描述 投票:0回答:2

我们面临的问题如下:当使用 Safari 而不是 Chrome 作为浏览器时,我们在 get api 调用时收到 401 状态。我们使用的技术是 React 和 Django Rest Framework。在 React 中我们也使用 axios。同样,当我们使用 Chrome 作为浏览器时一切都很好(没有给出 401 错误并且身份验证似乎很好),但是当我们切换到 Safari 时,它不起作用。我们还应该注意,在使用 Postman 进行测试时,如果我们在身份验证标头中存储令牌,则不会给出 401 状态(它有效)。

为了尝试解决这个问题,我们在 Django 后端尝试了不同类型的身份验证类,并确保 CORS 在我们的设置中。我们还确保遵循 React 组件生命周期进行正确安装,并包含每个 api 调用所需的适当信息。我们认为这是客户端问题。

请参阅下图,了解我们看到的网络请求/响应以及我们的 api 调用的简要说明。

Network Responses and api call

reactjs http https django-rest-framework token
2个回答
28
投票

事实证明,我们问题的根源在于我们没有以正斜杠结束我们的 api url,导致出现 301,然后是 304。Chrome 能够自动更正,没有出现问题,但 Safari、IE 和 Firefox不能。


0
投票

我遇到了类似的问题,即在我的 Ubuntu 计算机上使用 Next.js 进行开发时,favicon 在 Safari 中返回 401 错误。我找到了一个适合我的解决方案,可以在here找到该解决方案以进行本地开发。

此外,为了确保它在实时环境(例如登台或生产)中工作,我按照

this
指南中的建议添加了属性 crossorigin="use-credentials"

© www.soinside.com 2019 - 2024. All rights reserved.