ajax2中只要添加了事件监听,就会报一个跨域的错误,直接上代码
发布于 6 年前 作者 ZhaoHongzcyh 3308 次浏览 来自 问答

cors.jpg 下面图片是后端代码 cors1.jpg 不知道为什么只要添加了事件监听,就会报一个跨域的错 cors2.jpg

11 回复

这个问题还是第一次遇到

看错了,sorry!!

cors解决跨域问题,其实跟前端http请求的库也有关系,例如jquery的ajax 和 axios 去请求同一个后端,可能一个可以一个不可以。一般情况这个头设置为 req的 origin 属性

就是从哪个地址请求,这里就设置成了哪个地址。 具体参考cors 库

@lileilei 作者设置的确实是后端响应头

继续放图,看看head里面返回的到底是什么.

cd.jpg 这是具体的请求信息

这里我开始xhr.upload.onprogress是放在open方法之前的,但是报的错依旧是跨域错误,只要屏蔽xhr.upload.onprogress这个内容就可以正常执行。

如果后端设置响应头成功,那么浏览器的Response Headers里会显示的,5L图里并没有显示,说明设置不生效。另外cors也针对post/get/option方法的,你看后端设置有没有成功。要我说,直接引入cors库吧,省事。

@ZhaoHongzcyh 貌似是options的请求有问题,所以后面的post就终止了.

试试这个

app.all('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    //res.header("Access-Control-Allow-Headers", "*");
    res.header('Access-Control-Allow-Headers', 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,Keep-Alive,guid,token,version');
    if (req.method.toLowerCase() === "options") {
        res.send()
    } else {
        next();
    }
});

不好意思,现在才看到,今天下午项目出现了一点问题,没有及时回复。我等会儿回去之后尝试一次,谢谢了@178220709

该问题目前尚未解决。。请大佬们提供帮助

回到顶部