如何向.NET Core发送multipart/form-data请求时传递字符串类型Token
解决Vue对接.NET时form-data请求Token格式异常问题
问题根源
你的authHeader()函数应该返回了包含Token键的对象(比如{ Token: "xxx" }),而非直接返回Token字符串:
- 未用
JSON.stringify时,axios将对象转为字符串[Object object],后端无法识别 - 用
JSON.stringify后,Token变成{"Token":"xxx"}格式的JSON字符串,不符合后端需要的纯字符串要求
解决方案
方案1:修改authHeader()返回纯字符串Token
直接调整authHeader(),让它返回Token的字符串值:
function authHeader() { const user = JSON.parse(localStorage.getItem('user')); return user?.token || ''; }
之后所有接口(包括普通GET/POST和form-data请求)的headers中Token都会是纯字符串,无需额外处理。
方案2:保留authHeader()结构,请求时提取Token值
如果authHeader()不能修改(比如其他业务依赖其对象结构),就在请求时手动提取Token字符串:
updateMainIconPath(data) { const authInfo = authHeader(); return axios.post(`${process.env.VUE_APP_PORTAL_API_URL}Page/update-page-icon-path`, data, { headers: { Token: authInfo?.Token || '', 'Content-Type': 'multipart/form-data' } }); }
普通接口也要采用同样的写法,确保所有请求的Token格式统一。
后端验证
确认.NET后端是从请求头的Token字段直接读取字符串值,而非解析JSON格式,避免后端逻辑不匹配导致的验证失败。
内容的提问来源于stack exchange,提问作者AliCa
相关产品推荐
相关产品推荐

