我已经使用SQLAlchemy,Flask和Authlib(Oauth框架)在Python中构建了REST API。
此API在Docker容器上运行,该容器已配置了SSL,CORS,永久会话...
当我尝试在Axios应用程序中使用React在API上请求令牌时,它会起作用:
axios({
method: "post",
url: `.../user/login`,
data: {username, password}
}).then(response => {
...
}).catch(error => {
...
})
但是当我尝试撤消此令牌向注销中间件端点发出Axios请求时,我收到Uncaught (in promise) Error: Request failed with status code 403
(img):
axios({
method: "post",
url: `.../user/logout`,
headers: {Authorization: `Bearer ${this.props.login.access_token}`},
}).then(response => {
...
}).catch({
...
})
我不明白。如果我发行令牌并使用Postman或Insonia之类的应用程序撤消,则可以。
我该如何解决?为什么会发生?
我研究并发现了一些线程,但是仍然存在这个问题:Async requests to a web service,Uncaught (in promise) Error: Request failed with status code 404 ...
糟糕¹:出于法律原因,我无法向我的雇主显示API源代码
obs ²:我假设这是异步/同步问题,我不确定100%
答案 0 :(得分:0)
通常,如果您没有发出请求的权限,则会收到“禁止的403”响应。我认为这与CORS有关。您能否检查浏览器中的“网络”选项卡,以确保您通过Postman和浏览器发出的请求看起来都一样,如果有OPTIONS请求,响应是什么?