如何在Strapi中使用Axios携带授权令牌发送POST请求?
在Strapi中使用Axios携带授权令牌发送POST请求的解决方案
确认令牌的有效性和格式
确保你拿到的是Strapi返回的完整JWT令牌,一般通过/api/auth/local登录接口获取,返回数据里的jwt字段就是要用的核心内容。别出现令牌截短、多打空格的情况,格式错误会直接导致验证失败。正确配置Axios请求头
授权头的格式必须是Bearer <你的令牌>,注意Bearer后面有个空格,绝对不能漏。给你一个可直接参考的代码示例:import axios from 'axios'; const jwtToken = '这里填入你的JWT令牌'; const targetApi = 'http://localhost:1337/api/你的目标接口路径'; const requestData = { /* 这里放置POST请求要提交的数据 */ }; axios.post(targetApi, requestData, { headers: { 'Authorization': `Bearer ${jwtToken}`, 'Content-Type': 'application/json' // 提交JSON数据必须添加这个请求头 } }) .then(res => console.log('请求成功:', res.data)) .catch(err => console.error('请求失败:', err.response?.data || err.message));检查Strapi后台的权限设置
登录Strapi后台,找到你要访问的内容类型,切换到Permissions标签页,确认当前使用的角色(比如Authenticated)已经开启了该接口的create权限。如果是自定义路由,还需要在config/routes.js里配置对应的权限策略。排查跨域(CORS)问题
如果前端和Strapi不在同一个域名下,需要在Strapi的config/middlewares.js里配置CORS允许携带凭证:module.exports = [ // 保留其他原有中间件,仅修改cors配置部分 { name: 'strapi::cors', config: { origin: ['你的前端域名'], // 例如'http://localhost:3000' credentials: true, methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Content-Type', 'Authorization'], }, }, ];修改完成后必须重启Strapi服务,配置才会生效。
调试定位具体错误
在Axios的catch块里打印完整的错误信息,尤其是err.response.data,Strapi会返回明确的失败原因,比如令牌过期、权限不足。也可以用浏览器开发者工具的Network标签,检查请求头里的Authorization字段是否正确携带,令牌内容是否完整。
内容的提问来源于stack exchange,提问作者Mohamed Mehdi
相关产品推荐
相关产品推荐

