iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue中axios如何解决跨域问题
  • 510
分享到

vue中axios如何解决跨域问题

2024-04-02 19:04:59 510人浏览 独家记忆
摘要

这篇文章主要介绍Vue中axiOS如何解决跨域问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue中axios不支持vue.use()方式声明使用。 所以有两种方法可以解决这点:

这篇文章主要介绍Vue中axiOS如何解决跨域问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

vue中axios不支持vue.use()方式声明使用。 所以有两种方法可以解决这点:

第一种: 在main.js中引入axios,然后将其设置为vue原型链上的属性,这样在组件中就可以直接 this.axios使用了

import axios from 'axios';
Vue.prototype.axios=axios;

components:

this.axios({
    url:"a.xxx",
    method:'post',
    data:{
      id:3,
      name:'jack'
    }
  })
  .then(function(res){
    console.log(res);
  })
  .catch(function(err){
    console.log(err);
  })
 }

这里需要注意一点,就是在axios中把请求到的数据 使用this复制给data是无效的,使用箭头函数可以解决。

vue cli脚手架前端后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口Http://10.1.5.11:8080/xxx/duty?time=2017-07-07 14:57:22',是要跨域的才可以访问的,如果直接访问会报 XMLHTTPRequest can not load http://10.1.5.11:8080/xxx/duty?time=2017-07-07 14:57:22'. Response to preflight request doesn't pass access control….

为什么存在跨域问题?因为这是非同源互相通讯,具体可以自己去Google了解,这里只需要在webpack配置一下proxyTable就OK了,在config中找到index.js如下 :

config/index.js

dev: {
  proxyTable: {
   '/api': {
    target: 'http://10.1.5.11:8080/',//设置你调用的接口域名和端口号 
    changeOrigin: true,   //跨域
    pathRewrite: {
     '^/api': '/'     //这里理解成用‘/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://10.1.5.11:8080/xxx/duty?time=2017-07-07 14:57:22',直接写‘/api/xxx/duty?time=2017-07-07 14:57:22'即可
    }
   }

跨域成功,但是这只是开发环境(dev)中解决了跨域问题,生产环境中真正部署到服务器上如果是非同源还是存在跨域问题,如我们部署的服务器端口是3001,需要前后端联调,第一步前端我们可以分生产production和开发development两种环境分别测试,在config/dev.env.js和prod.env.js里也就是开发/生产环境下分别配置一下请求的地址API_HOST,开发环境中我们用上面配置的代理地址api,生产环境下用正常的接口地址,所以这样配置,分别在config/dev.env.js和prod.env.js两个文件中进行以下配置。

config/dev.env.js:

module.exports = merge(prodEnv, {
 node_ENV: '"development"',//开发环境
 API_HOST:"/api/"
})

prod.env.js

module.exports = {
 NODE_ENV: '"production"',//生产环境
 API_HOST:'"http://10.1.5.11:8080/"'
}

当然不管是开发还是生产环境都可以直接请求http://10.1.5.11:8080//。配置好之后测试时程序会自动判断当前是开发还是生产环境,然后自动匹配API_HOST,我们在任何组件里都能用process.env.API_HOST来使用地址如:

instance.post(process.env.API_HOST+'user/login', this.fORM)

然后第二步后端服务器配置一下cros跨域即可,就是access-control-allow-origin:*允许所有访问的意思。综上:开发的环境下我们前端可以自己配置个proxy代理就能跨域了,真正的生产环境下还需要后端的配合的。某大神说:此方法ie9及以下不好使,如果需要兼容,最好的办法是后端在服务器端口加个代理,效果类似开发时WEBpack的代理。

axios发送get post请求问题

发送post请求时一般都要设置Content-Type,发送内容的类型,application/JSON指发送json对象但是要提前stringify一下。application/xxxx-form指发送?a=b&c=d格式,可以用qs的方法格式化一下,qs在安装axios后会自动安装,只需要组件里import一下即可。

const postData=JSON.stringify(this.formCustomer);
'Content-Type':'application/json'}
const postData=Qs.stringify(this.formCustomer);//过滤成?&=格式
'Content-Type':'application/xxxx-form'}

拦截器的使用

当我们访问某个地址页面时,有时会要求我们重新登录后再访问该页面,也就是身份认证失效了,如token丢失了,或者是token依然存在本地,但是却失效了,所以单单判断本地有没有token值不能解决问题。此时请求时服务器返回的是401错误,授权出错,也就是没有权利访问该页面。

我们可以在发送所有请求之前和操作服务器响应数据之前对这种情况过滤。

// http request 请求拦截器,有token值则配置上token值
axios.interceptors.request.use(
  config => {
    if (token) { // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
      config.headers.Authorization = token;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  });
// http response 服务器响应拦截器,这里拦截401错误,并重新跳入登页重新获取token
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 这里写清除token的代码
          router.replace({
            path: 'login',
            query: {redirect: router.currentRoute.fullPath}  //登录成功后跳入浏览的当前页面
          })
      }
    }
    return Promise.reject(error.response.data) 
  });

以上是“vue中axios如何解决跨域问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: vue中axios如何解决跨域问题

本文链接: https://www.lsjlt.com/news/76423.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue中axios如何解决跨域问题
    这篇文章主要介绍vue中axios如何解决跨域问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue中axios不支持vue.use()方式声明使用。 所以有两种方法可以解决这点:...
    99+
    2022-10-19
  • 解决vue cli3使用axios跨域问题
    目录一、什么是跨域1、跨域2、同源策略3、跨域问题怎么出现的二、使用 axios 演示并解决跨域问题(vue-cli3.0)1、项目创建、与 axios 的使用2、跨域问题重现3、解...
    99+
    2022-11-13
  • vue如何解决axios请求前端跨域问题
    目录前言一、为什么会出现跨域的问题?二、解决方案跨域资源共享(CORS)写在最后前言 最近在写纯前端的vue项目的时候,碰到了axios请求本机的资源的时候,出现了访问报404的问...
    99+
    2022-11-12
  • 如何解决vue跨域axios异步通信问题
    小编给大家分享一下如何解决vue跨域axios异步通信问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在项目中,常常需要从后端获取数据内容。特别是在前后端分离的时候,前端进行了工程化部署...
    99+
    2022-10-19
  • vue如何解决axios请求出现前端跨域问题
    本篇内容主要讲解“vue如何解决axios请求出现前端跨域问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue如何解决axios请求出现前端跨域问题”吧!在...
    99+
    2022-10-19
  • VUE如何解决跨域问题
    这篇文章主要介绍“VUE如何解决跨域问题”,在日常操作中,相信很多人在VUE如何解决跨域问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VUE如何解决跨域问题”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-02
  • 如何解决Django+vue跨域问题
    小编给大家分享一下如何解决Django+vue跨域问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!跨域由于开发模式为前后端分离...
    99+
    2022-10-19
  • vue-cli3跨域问题如何解决
    本篇内容介绍了“vue-cli3跨域问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1:将任何未知请求转发到代理服务器如:前端地址...
    99+
    2023-07-04
  • Vue如何解决跨域问题详解
    什么是跨域 跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。 这里列举一个经典的列子: #协议跨域http://a....
    99+
    2022-11-13
  • 如何使用axios解决跨域cookie丢失的问题
    这篇文章主要介绍如何使用axios解决跨域cookie丢失的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!设置 axios.defaults.withCredentials = ...
    99+
    2022-10-19
  • Vue项目中该如何解决跨域问题
    目录跨域同源策略express服务器vue处理跨域express处理跨域总结跨域 跨域报错是前端开发中非常经典的一个错误,报错如下  Access to XMLHttpRe...
    99+
    2022-11-13
  • 解决Vue+SpringBoot+Shiro跨域问题
    目录一、配置Vue前端1、开发跨域配置2、生产跨域配置二、配置spring boot相信大家刚开始做都会遇到这个问题,在网上找了好多也不管用,都写的不全, 在这里记录一下,希望对大家...
    99+
    2022-11-12
  • vue跨域问题怎么解决
    1、可以在后端服务器中进行配置,允许指定的域名或IP地址访问后端API,这样就可以解决跨域问题。常用的方法是在服务器端添加CORS(...
    99+
    2023-05-13
    vue跨域问题 vue
  • Vue解决ajax跨域的问题
    目录(一)什么是跨域(二)axios请求(1)请求方式(2)如何发送axios请求(三)配置代理解决跨域问题(1)方法一:使用vuecli配置代理服务器(2)方法二(一)什么是跨域 ...
    99+
    2023-05-14
    Vue ajax跨域 ajax跨域
  • vue-cli3 中怎么解决跨域问题
    这篇文章给大家介绍vue-cli3 中怎么解决跨域问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1:将任何未知请求转发到代理服务器如:前端地址:127.0.0.1后端地址:127....
    99+
    2022-10-19
  • vue的跨域问题怎么解决
    这篇“vue的跨域问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue的跨域问题怎么解决”文章吧。在vue中,跨...
    99+
    2023-07-04
  • 1.vue3+vite开发中axios使用及跨域问题解决
    一、跨域问题解决  1.基于vite+vue3配置时,在vite.congig.js文件server项目中添加 proxy代理   文件名:vite.congig.js   server: {    open: true,//启动项目自动弹...
    99+
    2023-09-21
    前端 vue
  • node.js中如何解决跨域问题
    这篇文章主要讲解了“node.js中如何解决跨域问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js中如何解决跨域问题”吧!如果用Express框架的话可以使用cors包来解决跨...
    99+
    2023-06-17
  • Vue项目中怎么解决跨域问题
    本篇内容主要讲解“Vue项目中怎么解决跨域问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue项目中怎么解决跨域问题”吧!跨域跨域报错是前端开发中非常经典的一个错误,报错如下 Ac...
    99+
    2023-07-02
  • 解决 Axios 跨域问题,轻松实现接口调用
    跨域是指访问另外一个域的资源,由于浏览器的同源策略,默认情况下使用 XMLHttpRequest 和 Fetch 请求时是不允许跨域的。跨域的根本原因是浏览器的同源策略,这是由浏览器对 JavaScript 施加的安全限制。 Axios...
    99+
    2023-10-25
    前端 后端 java json javascript
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作