vue使用axios调用API问题

发布于 2022-09-11 14:24:49 字数 335 浏览 12 评论 0

前端vue通过axios调用java接口,用的是springboot+jwt,用post请求的时候,headers里带了个token,请求的时候会变成options,然后报401。网上找了一下说这是预检请求,在服务端判断options后回传成功,但还是报了个跨域的错,没有自动发post请求,这是什么原因?

没有自定义headers的请求是正常的。

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

青瓷清茶倾城歌 2022-09-18 14:24:49

有一个东西叫做预请求

我还不会笑 2022-09-18 14:24:49

跨域问题是由于浏览器的同源策略造成,这是一个安全措施,默认情况下服务器资源不允许在非同域页面展示,所以让后端允许资源跨域即可。
该问题也可通过使用代理解决,Vue开发模式下自动有代理服务,配置一下即可。

故事和酒 2022-09-18 14:24:49

跨域请求会先发option请求
所以后端必须能够处理option请求.
其次是,服务器也必须带有跨域的header才行.
搜索一下跨域的处理方案就好了.

梅倚清风 2022-09-18 14:24:49
axios(url,toUrl(params)).then.....


function toUrl(obj) {
    if (obj && obj instanceof Object) {
        var arr = [];
        for (var i in obj) {
            if (obj.hasOwnProperty(i)) {
                if (Array.isArray(obj[i])) {
                    obj[i].forEach(function(v) {
                        arr.push(escape(i) + '=' + escape(v));
                    });
                } else {
                    if (typeof obj[i] == 'function') obj[i] = obj[i]();
                    if (obj[i] == null || obj[i] == undefined) obj[i] = '';
                    arr.push(escape(i) + '=' + escape(obj[i]));
                }
            }
        }
        return arr.join('&').replace(/%20/g, '+');
    } else {
        return obj;
    }
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文