详解Vue 开发模式下跨域问题

 更新时间:2017年06月06日 11:28:08   作者:HeiheiLqq  
本篇文章主要介绍了Vue 开发模式下跨域问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

设置请求头部

  1. 后端设置请求头部Access-Control-Allow-Credentials: trueAccess-Control-Allow-Origin: www.xxx.com
  2. 前端post请求设置withCredentials=true
  3. 这里用了axios的请求数据方法代码如下:
import axios from 'axios'
import config from '../config'
export default {
request (method, uri, data, headerConfig = {withCredentials: true}) {
if (!method) {
 console.error('API function call requires method argument')
 return
}

if (!uri) {
 console.error('API function call requires uri argument')
 return
}

let url = config.serverURI + uri

return axios({ method, url, data, ...headerConfig })
}
}

jQuery的$.ajax::

$.ajax({
type: "POST",
url: "http://www.xxx.com/api.php",
dataType: 'json',
xhrFields: {
  withCredentials: true
},
crossDomain: true
}).then((json) => {
// balabala...
})

使用nodejs做代理

  1. 上面的那种方法需要后端配合设置头部,对于我这种前端小白来讲,联调时各种不成功的报错也无从解决,所以个人比较倾向于下面这种做法,鉴于使用脚手架vue-cli创建的项目,作者已经给我提供好了解决的方法。
  2. 找到项目文件夹下的config/index.js, 里面有一行proxyTable: {}, 这里就是作者为我们留的接口, 我们添加代理规则进去
var path = require('path')
module.exports = {
build: {
env: require('./prod.env'),
index: path.resolve(__dirname, '../xxx/index.html'),
assetsRoot: path.resolve(__dirname, '../xxx'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
productionGzip: false,
productionGzipExtensions: ['js', 'css']
},
dev: {
env: require('./dev.env'),
port: 8080,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
 '/api': {
  target: 'http://www.xxx.com/api.php/',
  changeOrigin: true,
  pathRewrite: {
   '^/api': '/'
  }
 }
},
cssSourceMap: false
}
}

这里target为目标域名,pathRewrite为转换规则,请求数据时将接口地址 根据转换规则请求就可以解决跨域啦!(这里也可以配置headers,设置cookis,token等)

jsonp

jsonp也是一种解决跨域的方法,不过我从来没有用过,在网上查了下资料,jsonp的原理是script标签引入js是不受域名限制的, 由于是模拟插入script标签, 所以不可以用post请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Vue3 中路由Vue Router 的使用实例详解

    Vue3 中路由Vue Router 的使用实例详解

    vue-router是vue.js官方给出的路由解决方案,能够轻松的管理SPA项目中组件的切换,这篇文章主要介绍了Vue3 中路由Vue Router 的使用,需要的朋友可以参考下
    2023-02-02
  • Vue3中解决组件间css层级问题的最佳实践

    Vue3中解决组件间css层级问题的最佳实践

    <Teleport> 是 Vue 3 中引入的一个内置组件,用于将组件的内容渲染到 DOM 中的指定位置,而不受组件层级结构的限制,本文给大家介绍了Vue3使用Teleport解决组件间css层级问题的最佳实践,需要的朋友可以参考下
    2025-02-02
  • vue动态代理无须重启项目解决方案详解

    vue动态代理无须重启项目解决方案详解

    这篇文章主要为大家介绍了vue动态代理无须重启项目解决方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • vue解决使用$http获取数据时报错的问题

    vue解决使用$http获取数据时报错的问题

    今天小编就为大家分享一篇vue解决使用$http获取数据时报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • vue中如何进行异步请求

    vue中如何进行异步请求

    前端的数据均是通过接口请求拿到的,而Vue本身不支持ajax请求,那么该怎么解决Vue中的异步请求呢?这儿提供了几种方法,希望对大家有所帮助
    2022-05-05
  • Vue中keep-alive组件的原理与缓存详解

    Vue中keep-alive组件的原理与缓存详解

    Vue 的 keep-alive 是一个内置组件,用于缓存不活动的组件实例,避免重复渲染,从而优化应用性能,下面就跟随小编一起来看看其核心实现原理和缓存内容吧
    2025-03-03
  • Vue 嵌套路由使用总结(推荐)

    Vue 嵌套路由使用总结(推荐)

    这篇文章主要介绍了Vue 嵌套路由使用总结,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • vue3 Vite 进阶rollup命令行使用详解

    vue3 Vite 进阶rollup命令行使用详解

    这篇文章主要介绍了vue3 Vite 进阶rollup命令行使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Vue 组件复用多次自定义参数操作

    Vue 组件复用多次自定义参数操作

    这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue转react入门指南

    vue转react入门指南

    因为新公司使用react技术栈,包括Umi、Dva、Ant-design等一系列解决方案。本文就简单的介绍一下vue转react入门指南,感兴趣的可以了解一下
    2021-10-10

最新评论