const getInfo=()=>{ axios.get("http://localhost:3000/posts").then((res)=>{ console.log(res.data) }).catch((error)=>{ console.log(error) }) }服务器端设置了 res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization'); res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');还是报跨域错误
时间: 2024-03-11 14:47:00 浏览: 123
socket.io认证,nodejs实现socket.io demo(server/client)
如果你已经在服务端设置了跨域响应头,但仍然报跨域错误,可以尝试在axios请求时添加`withCredentials: true`参数来解决问题,例如:
```
const getInfo = () => {
axios.get("http://localhost:3000/posts", { withCredentials: true })
.then((res) => {
console.log(res.data)
})
.catch((error) => {
console.log(error)
})
}
```
这个参数会告诉浏览器携带跨域请求中的cookie等凭据信息,从而通过服务端的身份验证,解决跨域问题。同时,在服务端也需要设置响应头,允许携带凭据信息,例如:
```
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
res.header('Access-Control-Allow-Credentials', 'true'); // 允许携带凭据信息
next();
});
```
阅读全文