首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用axios执行post请求,返回未经授权的401错误

无法使用axios执行post请求,返回未经授权的401错误
EN

Stack Overflow用户
提问于 2021-10-24 18:04:55
回答 2查看 35关注 0票数 0

我使用Redux、React和Node从头开始创建了一个身份验证服务。一切都很好,直到我把我的帖子部分复制到我的BackEnd上。redux部分我想还可以。我的问题是当我发送授权承载令牌时。我可以用失眠来发帖了。但是,当我尝试使用web应用程序发布帖子时,我无法做到。这是我的操作:

代码语言:javascript
复制
export const createPost = ( formValues: any) => async(dispatch: any, getState: any) => {
  const { userId } = getState().auth;
  let token = userId

  const headers = {
    header: {
      'Content-Type' : 'application/json',
      'Accept' : 'application/json',
      Authorization: `Bearer ${token}`
    }
  };
  const response = await AlleSys.post('/posts', {...formValues, headers})
  // dispatch({type: CREATE_POST, payload: response.data})

userId是我的JWT标记。

我已经在后台设置了Cors

代码语言:javascript
复制
const corsOptions ={
    origin:'http://localhost:3000',
    credentials:true,            //access-control-allow-credentials:true
    optionSuccessStatus:200
}
app.use(cors(corsOptions))

关于失眠症。同样的要求也适用于失眠。

对于失眠,我使用的是与我的应用程序相同的持有者令牌,所以问题不在于JWT。

EN

回答 2

Stack Overflow用户

发布于 2021-10-24 18:41:26

使用GET、POST、PUT、DELETE从Nodejs服务器或Insomnia查询端点将导致在检查选项之前调用。

但是浏览器会将HTTP请求限制在相同的域中,这会使您遇到CORS问题。由于Insomnia不是浏览器,CORS只是一个浏览器安全限制,所以它没有受到限制。

从您正在使用的CORS的docs

某些CORS请求被认为是“复杂的”,需要一个初始的OPTIONS请求(称为“飞行前请求”)。“复杂”CORS请求的一个示例是使用除GET/HEAD/POST之外的HTTP谓词(例如DELETE)或使用自定义头的请求。要启用飞行前处理,必须为要支持的路线添加新的选项处理程序:

因此,我认为您应该在所有路由之前包含app.options('*',cors()),并将其放在要首先处理的文件的顶部。

票数 0
EN

Stack Overflow用户

发布于 2021-10-24 18:43:21

我将我的代码更改为:

代码语言:javascript
复制
export const createPost = ( formValues: any) => async(dispatch: any, getState: any) => {
  const { userId } = getState().auth;
  let token = userId

  const headers = {
    authorization: `Bearer ${token}`
  };
  const response = await AlleSys.post('/posts', {...formValues}, {headers})

并且成功了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69699471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档