post请求失败而get请求成功(已设置跨域)是为什么?

通过二次封装的axios发送get请求

export const reqAddToCart = (skuId, skuNum) => requests({ url: `http://localhost:5000/cart/${skuId}/${skuNum}`, methods: 'get' })

在服务器文件中

app.get('/cart/:ksuId/:skuNum', (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.send({ code: 200 })
})

浏览器调用reqAddToCart,控制台输出结果是正常的

image.png

但是当我把get换成post的时候

export const reqAddToCart = (skuId, skuNum) => requests({ url: `http://localhost:5000/cart/${skuId}/${skuNum}`, methods: 'post' })
app.post('/cart/:ksuId/:skuNum', (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.send({ code: 200 })
})

直接使用postman中可以看到返回值

image.png

但是在浏览器中调用reqAddToCart函数发送请求则报错,请问是什么呢?

image.png

阅读 4.3k
3 个回答

从浏览器中看,是 cors 的问题。

排查一下 requests 这个方法的内部实现的吧。没有正确的发出请求

另外可以用 use


app.use('/cart/:ksuId/:skuNum', (req, res) => {
    res.setHeader('Access-Control-Allow-Origin', '*')
    res.send({ code: 200 })
})

看看网络请求,是不是还有一个OPTIONS请求。

app.options() 要返回204且携带header头

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题