解决vue $http的get和post请求跨域问题


Posted in Vue.js onJune 07, 2021

vue $http的get和post请求跨域问题

首先在config/index.js中配置proxyTable

proxyTable: {
      '/api':{
          // target:'http://jsonplaceholder.typicode.com',
          target:'http://localhost:9080',
          changeOrigin:true,

           pathRewrite:{
               '/api':''
           }
      }

用户名和密码登录的表单提交

methods: {
// get请求
            //  submitForm() {
            //      var formData=JSON.stringify(this.ruleForm);
            //      this.$http.get('/api/amdatashift/login/probe').then(function(data){

            //      }).catch(function(){
            //          console.log("服务器异常");
            //  });
            //  }
  //post请求
             submitForm() {
                 var formData=JSON.stringify(this.ruleForm);
                 this.$http.post('/api/amdatashift/login/user',{

                     username:this.ruleForm.username,
                     password:this.ruleForm.password
                 },{
                            emulateJSON:true
                        }).then(function(data){
                      console.log(data); 
                 }).catch(function(){
                     console.log("服务器异常");
             });
             }
      }

值得注意的是:

1、一定要设置 {emulateJSON: true},不然跨域不成功.

2、跨域在chrome浏览器中你看到的还是http://localhost:8080(即你启动vue的地址,而不是你服务器应用的地址),所以你看到不要惊讶,其实是跨域成功的。

3、http请求中要带上/api,经过index.js的代理会将/api去掉,浏览器中的访问地址为http://localhost:8080/api/amdatashift/login/user,然后实际的访问的地址是http://localhost:9080/amdatashift/login/user。通过代理就实现了跨域访问。

vue el-upload上传控件一直报跨域问题 post请求变成get请求

最近做vue的上传,用的是elmentui的el-upload控件,结果一直出幺蛾子,希望大家少走坑。

不多说 截图上代码。

1。搬控件改action地址

解决vue $http的get和post请求跨域问题

配置好了后,直接测试,emmm ..... 报错 如下:

解决vue $http的get和post请求跨域问题

提示了跨域问题,这个能理解毕竟我是本机开发前端服务和后端服务端口不一样。

查找资料,vue跨域问题的解决方案,然后说的开启代理。

解决vue $http的get和post请求跨域问题

找到vue项目的config中的index.js文件打开,添加如图中的东西。 注意changeOrigin是true。这个意思用/api代替http://192.158.111.101:8000。例子:原地址'http://localhost:8000/ssmShow/upload' 现地址'/api/ssmShow/upload'。

所以上传控件改为:

解决vue $http的get和post请求跨域问题

测试 ;emmmm。。。又错了

解决vue $http的get和post请求跨域问题

解决vue $http的get和post请求跨域问题

还是报错跨域,而且请求了2次,而且请求有问题啊

文件上传应该还是post请求,结果这边一个get请求 一个options请求。懵逼。302的状态不会改,先去搞后面这个500的报错。

options的请求网上有他的解释和处理方法 我照着改了(方法是用过滤器截取请求,并修改) 贴代码 我的是java 后台。

添加过滤器。

解决vue $http的get和post请求跨域问题

同时web.xml需要添加如下

解决vue $http的get和post请求跨域问题

改后重启java后台,测试 emmm。。。如下:

解决vue $http的get和post请求跨域问题

解决vue $http的get和post请求跨域问题

解决vue $http的get和post请求跨域问题

这次厉害了 调用三次接口了 ,我去。不过好的情况是 options请求已经返回正确了,因为options请求返回正确了,所以请求了第三次。

仔细看了下第三次请求,这个是个get请求啊。附件上传怎么就是个get请求呢。

网上找了很久,大家都说的el-upload这个控件有问题。不能用action,于是按照网上方法在action里面加个假的地址,直接在控件的before-upload的钩子函数上动手脚。

直接在这里面用axios的post请求来提交文件。

解决vue $http的get和post请求跨域问题解决vue $http的get和post请求跨域问题

继续测试

解决vue $http的get和post请求跨域问题

第三次上传请求还是个get请求,这就有问题了,说el-upload中的action有问题就算了 怎么直接调用post请求,会直接变成get请求呢。然后找了好久。在一个老哥的提醒下知道。

js或者vue中当有错误时候,会导致post请求变成get请求。然后我就找了我的错误那就是我的地址。

解决vue $http的get和post请求跨域问题

你说气不气,居然只是这个地方少了斜杠,加上后测试

解决vue $http的get和post请求跨域问题

一切都好了 ,请求只有一个了 post还是post了 文件也上传成功了。虽然很难过 还是很开心。

注意我图中标记的地址,这个里面端口是8080的 还有api字样,这不是我的后台真正地址,这是代理地址,他通过代理就能访问我的真实地址了 ,所以老哥们别看见端口不对 或者地址路径不对就认为不对了 这个是对的。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue 插槽简介及使用示例
Nov 19 Vue.js
vue-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
vue中配置scss全局变量的步骤
Dec 28 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
vue 组件基础知识总结
Jan 26 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 #Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 #Vue.js
vue响应式原理与双向数据的深入解析
vue实现水波涟漪效果的点击反馈指令
vue 实现上传组件
May 31 #Vue.js
vue基于Teleport实现Modal组件
Vue+Element UI实现概要小弹窗的全过程
You might like
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
php中的三元运算符使用说明
2011/07/03 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python基于Tkinter实现的记事本实例
2015/06/17 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python生成requirements.txt的两种方法
2019/09/18 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
Python如何重新加载模块
2020/07/29 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
实习心得体会
2014/01/02 职场文书
铁路个人事迹材料
2014/01/30 职场文书
大学军训感言1000字
2014/02/25 职场文书
公司担保书范文
2014/05/21 职场文书
辩护意见书
2015/06/04 职场文书
后天观后感
2015/06/08 职场文书
行政处罚告知书
2015/07/01 职场文书
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript