基于vue开发的前端跨域问题Access-Control-Allow-Origin

news/2024/7/10 1:58:14 标签: vue

一、报错提示

   下载的时候报错:Access to XMLHttpRequest at 'http://127.0.0.1:10667/admin/sys/generator/code' from origin 'http://localhost:8080' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

 

 二、分析思路

   1、刚遇到这个问题的时候,还以为是后端原因,一直捣鼓后台,百度学习了解,发现不是后端问题,,,,,此时脑细胞不够用。。

    2、休息一会,开足马力,很老土的查找方式,那就是翻译报错的句子,如下:

前面一直针对 响应中“ Access-Control-Allow-Origin”标头的值不得为通配符“ *”  进行分析,翻译出来后,发现  XMLHttpRequest 这玩意也参与阻止,于是根据  XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制 进行查找,最后是发现是同事搭建项目的时候配置了这个:

  axios.defaults.withCredentials = true;

于是 我将它改为  

 axios.defaults.withCredentials = false;

完美解决前端显示跨域问题。

注意:

(一) 当前端配置withCredentials=true时, 后端配置Access-Control-Allow-Origin不能为*, 必须是相应地址

(二) 当配置withCredentials=true时, 后端需配置Access-Control-Allow-Credentials

(三) 当前端配置请求头时, 后端需要配置Access-Control-Allow-Headers为对应的请求头集合

三、相关代码

// 封装下载请求的方式 ,来源于 api.js
function download(url, params) {
    let  loadUrl = BASE_URL + url;
    return axios.post(loadUrl, params, { responseType:'blob' });
}


// 具体的业务请求
  handleSubmit(formName){
        if (!this.selectTable) {
            return;
        }
        this.generatorForm.tables = this.selectTable;
            let params = this.generatorForm;
            this.$refs[formName].validate((valid) => {
            if (valid) {
                this.api.generatorCode(params).then(response =>{
                    if (response === 'undefined'){
                         return;
                     }
                     console.log("response====",response);
                     let url = window.URL.createObjectURL(new Blob([response.data]));
                     let link= document.createElement('a');
                     link.style.display='none';
                     link.href=url;
                     link.setAttribute('download', 'source-code.zip');  
                     document.body.appendChild(link);
                     link.click();
                  });
                    }
                });
            },

 

四、后端跨域处理

   设置响应体,如 HttpServletResponse response  :

      response.setHeader("Access-Control-Allow-Origin","*");

   基于springboot开发,在contronler上加上:@CrossOrigin

五、其他

   本文只想表述的是在遇到问题的时候,不一定根据首要错误码查找线索,有时候倒数那几句 话,也会让你产生怦然心动。

   涉及的技术:axios 、http跨域、后端跨域

   学习的文章:https://juejin.im/post/5c2490ba6fb9a049ff4e2eca

 


http://www.niftyadmin.cn/n/1197315.html

相关文章

【swift学习笔记】四.swift使用Alamofire和swiftyJson

Alamofire是AFNetworking的swift版本,功能灰常强大。 github:https://github.com/Alamofire/Alamofire SwiftyJSON是操作json的非常棒的开源库 github:https://github.com/SwiftyJSON/SwiftyJSON 接下来我做一个简单的入门小例子, 我使用cocoaPods来管理…

Kafka基础概念

一、kafka流式数据平台具备的 特点 1、提供事件流的发布和订阅,即具备数据注入功能。 2、存储事件流数据的节点具有故障容错的特点,即具备数据存储功能。 3、能够对实时的事件流进行流式地处理和分析,即具备流处理功能。 核心组件&#xff…

初始化时间(一段时间,此文章中插入三年时间到数据库,从2015年12月1日开始)...

为什么80%的码农都做不了架构师?>>> public void TestInitDateInfo() throws Exception { // SimpleDateFormat sf new SimpleDateFormat("yyyy-MM-dd"); Calendar c Calendar.getInstance(); //设置时间 c.setTime(DateUtils.parseDate(&q…

kafka之生产者

一、通讯过程 生产者、消费者看作客户端,消息代理看作服务端,它们之间的网络通讯如下: 二、概念 1、生产者发送过程:生产者要发送消息,并不是直接发送给服务端,而是先在客户端把消息放入队列中&#xff0c…

企业微信的外部联系人回调处理技巧

一、关于设置接收事件服务器的信息 在企业微信管理后台的“客户联系-客户”页面,点开“API”小按钮,再点击“接收事件服务器”配置,进入配置页面,要求填写URL、Token、EncodingAESKey三个参数。 URL是企业后台接收企业微信推送请…

QT 自己制作IDE工具

项目创建基类选择项目文件编译运行项目文件1 mainwindow.h#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTextEdit> //文本 #include <QMenu> //加入菜单 #include <QMenuBar> //加入菜单栏 #include &l…

kafka之消费者基础知识一

一、消费者基础知识 1、读消息时&#xff0c;如果多个消费者同时读取一个分区&#xff0c;为了保证将日志文件的不同数据分配给不同的消费者&#xff0c;需要采用加锁、同步等方式&#xff0c;在分区级别的日志文件上做些控制。“同一个分区只可被一个消费者处理”&#xff0c…

wiindows 2012R2+11gR2RAC(11204)多节点传送检查报PRVG-11134

安装数据库软件时&#xff0c;出现多节点传送检查失败&#xff0c;如下图该报错可以忽略&#xff0c;继续安装。官方解释如下&#xff1a;PRVG-11134: Interface "n.n.n.n" on node "racnode1" is not able tocommunicate with interface "n.n.n.n&qu…