解决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从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
Vue仿百度搜索功能
Dec 28 Vue.js
Vuex实现简单购物车
Jan 10 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
Vue操作Storage本地化存储
Apr 29 Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 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中使用Oracle数据库(1)
2006/10/09 PHP
一个域名查询的程序
2006/10/09 PHP
PHP 函数学习简单小结
2010/07/08 PHP
基于php-fpm的配置详解
2013/06/03 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
JS Array对象入门分析
2008/10/30 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
js单词形式的运算符
2014/05/06 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
浅谈js闭包理解
2019/03/28 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
银行工作检查书范文
2014/01/31 职场文书
《燕子专列》教学反思
2014/02/21 职场文书
企业法人代表证明书
2014/09/27 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
财产分割协议书
2016/03/22 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL