reactjs - React 应用程序在通过 safari 访问时会抛出 401 错误,但其他情况下不会
问题描述
我有一个反应应用程序托管在云端分发后面的 s3 存储桶中。这与 django 服务器对话。登录在所有浏览器上都能正常工作(确认凭据正确,并且没有基本的连接问题)。登录后,应用程序会重定向到通过 fetch 执行简单 GET 请求的页面(到需要身份验证的 url)。这可以在桌面(macos)上的所有浏览器上成功运行,除了 safari,它会收到 401 未经授权的错误。同样,我在 iOS 上的每个浏览器上都收到 401 未经授权的错误。
我已经尝试刷新mac的DNS,但无济于事。我完全被难住了。如果它根本不起作用,那很好,但是除了 safari 之外的任何地方都可以工作吗?
获取代码:
componentDidMount() {
fetch(`${apiRoot}/info`, {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Token ${this.props.auth.token}`
}
})
.then(response => response.json())
.then(data => {
this.setState({
Name: data.name,
Email: data.email
});
});
}
解决方案
在获取 url 的末尾添加一个正斜杠:
fetch(`${apiRoot}/info/`, ...
Chrome 和 Firefox 似乎可以自己解决这个问题,但 Safari 却没有。
推荐阅读
- c - 致命错误:netinet/in.h:没有这样的文件或目录
- c - 如何告诉链接器/编译器包含看似“死”的代码
- php - 为什么php解释器不能解析&&之后的未设置调用?
- bash - 如何将bash中的第一个字母大写?
- pytorch - src_mask 和 src_key_padding_mask 的区别
- reactjs - 使用谷歌地图的api设置动态中心
- ios - 如何识别很多物体,同时添加很多节点?
- testing - 从 Azure DevOps (VSTS) 中的测试计划运行 SpecFlow 方案大纲或在测试执行后更新测试计划
- javascript - redux 中的 mapstatetoprops 会发生什么?
- node.js - Nextjs 函数在 vercel(以前称为 zeit)中的云无服务器函数中不起作用