Vue Ajax跨域请求

作者: scarecrowlxb | 来源:发表于2017-04-24 18:07 被阅读485次

思路

配置webpack-dev-server,代理某一个路径到目标路径,同是更改源和重写

Vue里定义一个全部变量:site
Vue.prototype.site = '/api/';
此后发送的ajax请求都使用此变量来组合(为了方便管理,当需要更改时直接更改次变量)

设置webpack的代理和重写
在 config/index.js里修改dev选项

 dev: {
    env: require('./dev.env'),
    port: 8080,
    autoOpenBrowser: true,
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api':{
        target:'http://xxxx.com/api',
        changeOrigin:true,
        pathRewrite:{
            '^/api':''
        }
      }
    },

主要看proxyTable选项:
/api 是要代理的目录,target 是目标URL,即后台接口的真正位置
changeOrigin 为是否修改源,当时用ajax且跨域测试时需为true
pathRewrite 为路由重定向

工作流程:
当检测到有URL请求且是/api 路径时就修改请求URL,把请求URL中的/api 替换为target里的值,同时改变源让浏览器认为不是跨域请求
example: 我发送一个ajax请求,路径为 /api/test.php ,那修改后真实请求的url就是 http://xxxx.com/api/test.php

注意 因为部署到服务器上时不再使用webpack,所以你需要修改ajax请求的url,当你使用之前说的全局变量时只需要修改下全局变量就好
,更好的实践是根据部署代码的位置和后台api的未知来设置需要代理的路径
假如部署的前端代码index.html在根目录下,后台api在/test/下,那么把代理路径设置为/test更胜一筹

相关文章

  • Vue-resource总结

    Vue 实现 Ajax请求 和跨域请求主要是通过插件vue-resource.js。 引进 引进插件vue-res...

  • 彻底让你明白跨域(服务器端为node)

    跨域只是针对ajax请求的。 如果产生跨域,那么将请求不到数据。 发起ajax请求所依赖的html页面的url地址...

  • 前端跨域

    什么是ajax跨域 ajax跨域的原理 ajax出现请求跨域错误问题,主要原因就是因为浏览器的“同源策略”,可以参...

  • Ajax跨域请求与SpringMVC结合的一些坑

    Ajax跨域的概念就不在这边陈述了... Ajax跨域请求真正的请求之前会进行一次预请求OPTIONS请求,为了让...

  • Vue Ajax跨域请求

    思路 配置webpack-dev-server,代理某一个路径到目标路径,同是更改源和重写 Vue里定义一个全部变...

  • SpringMVC 进行ajax跨域请求访问

    关于 springmvc 3.x 版本对ajax跨域请求访问 ajax 请求后,浏览器出现跨域的问题那么在当前环境...

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • 跨域

    什么是跨域? 为什么会发生ajax跨域?浏览器限制跨域【发出的请求不是本域】XHR请求【json】 解决思路:1:...

  • Vue,Django前后端分离,开发Openstack(五)Dj

    1. Vue前端请求数据方法 this.$ajax,这个是在main.js中已经声明了的 在上节Vue跨域设置中,...

  • vue发送请求(axios + vue-resource)

    axios本身并不支持发送跨域的请求,使用vue-resource发送跨域请求。 vue-resource基本使用...

网友评论

    本文标题:Vue Ajax跨域请求

    本文链接:https://www.haomeiwen.com/subject/nhipzttx.html