解决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 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
Vue3 Composition API的使用简介
Mar 29 Vue.js
关于Vue中的options选项
Mar 22 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 Vue.js
vue特效之翻牌动画
Apr 20 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关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
js实现微信聊天界面
2020/08/09 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
Python 专题四 文件基础知识
2017/03/20 Python
Python中单例模式总结
2018/02/20 Python
django用户登录和注销的实现方法
2018/07/16 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python实现图片添加文字
2019/11/26 Python
如何利用python 读取配置文件
2021/01/06 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
人力资源部培训专员岗位职责
2014/01/02 职场文书
初中生物教学反思
2014/01/10 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
承诺书范文
2014/06/03 职场文书
数学教研活动总结
2014/07/02 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
办公室岗位职责
2015/02/04 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server