Vue中Axios POST触发FastAPI 307临时重定向问题求助
问题修复方案
核心错误点及修正:
无需手动JSON.stringify序列化
Axios 的post方法会自动将传入的 JavaScript 对象序列化为 JSON,并设置正确的Content-Type: application/json请求头,和你用 Pythonrequests.post(..., json=data)的行为完全一致。手动调用JSON.stringify反而会让 Axios 把字符串当成普通表单数据处理,导致后端无法解析请求体,触发307重定向。数组转字符串的写法错误
JavaScript 里没有全局的toString([1,2,3])用法,要生成和 Pythonstr([1,2,3])一致的"[1,2,3]"字符串,需要用JSON.stringify([1,2,3])。
修正后的Vue代码:
axios.post('http://127.0.0.1:8000/events/v1/items', { page_id: "v1", useragent: "Mozilla/5.0", ip_adress: "1.1.1.1", age: 31, question: 1, answer_array: JSON.stringify([1,2,3]), other_answer: "" }) .then(response => console.log(response)) .catch(error => console.log(error))
额外排查点:
如果修正后仍出现307,检查 FastAPI 的路由定义:
- 如果后端路由是
@app.post("/events/v1/items/")(末尾带斜杠),请把请求 URL 改成http://127.0.0.1:8000/events/v1/items/(加斜杠),或者修改后端路由去掉末尾斜杠。
内容的提问来源于stack exchange,提问作者Sergei Suslov
相关产品推荐
相关产品推荐

