这两天由于学艺不精被这fetch跨域折磨了两天 但看看头上还有这么多头发 还算有一丝丝安慰
1.解决跨域只需要在node中设置(无耻的复制了别人的代码)
(1)允许所有域名跨域
app.all("*",function(req,res,next){
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin","*");
//允许的header类型
res.header("Access-Control-Allow-Headers","content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options')
res.send(200); //让options尝试请求快速结束
else
next();
}
(2)允许指定域名跨域
app.all("*",function(req,res,next){
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin","http://localhost:3000");
//允许的header类型
res.header("Access-Control-Allow-Headers","content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options')
res.send(200); //让options尝试请求快速结束
else
next();
}
注意:端口同样要设置
2.如果fetch中添加了请求参数
credentials : 'include'
这当然是表示要带上cookie,如果使用cookie和session存数据那么 这个就要设置啦
如果设置了次参数 那么后端也要添加一条设置
res.header("Access-Control-Allow-Credentials", "true");
好了 差不多就记到这点 哎