【Vue】本地使用 axios 调用第三方接口并处理跨域

前端处理跨域

一. 开发准备

  1. 开发工具:VScode
  2. 框架:Vue2
  3. 项目结构:vue脚手架生成的标准项目(以下仅显示主要部分)
    在这里插入图片描述
  4. 本地已搭建好的端口:8080
  5. 要请求的第三方接口:http://1.11.1.111:端口号/xxx-api/code

注意:前端环境已搭建好,必须确保axios 已下载

二. 需求分析

  1. 前端登录页(login - index.vue)的验证码需调用第三方的验证码接口,并将其显示
    在这里插入图片描述

三. 跨域

3.1 直接调用(跨域)

  1. 代码实现
<script>
import axios from "axios";
export default {
   
	data(){
   
		return {
   
		}
	},
	methods:{
   
		fetchCode(){
   
			axios.get('http://1.11.1.111:端口号/xxx-api/code').then(res=>{
   
				console.log(res,"直接调用第三方接口")
			}) 
		}
	}
}
</script>
  1. 结果:跨域
    在这里插入图片描述

3.2 解决跨域:poxy

  1. 配置 main.js
// 跨域代码,qualityPlatform可替换为任意

axios.defaults.baseURL = "/qualityPlatform"
  1. 配置 config.js
module.exports = {
   
	dev:{
   
		assetsSubDirectory: 'static',
    	assetsPublicPath: '/',
		proxyTable: {
                                        //  配置多个代理
      		'/qualityPlatform': {
   
      		  	  target: 'http://1.11.1.111:端口号',
      			  pathRewrite: {
   
      				  '^/qualityPlatform': '/'
      			  },
      			  changeOrigin: true
     		},
      		'/api': {
   
        		  target: 'http://localhost:80', 		// 本地后端抛出的接口
        		  secure: false,
        		  pathRewrite: {
    						// 路径重写
          			  '^/api': '/' 						// 替换target中的请求地址
        		  },
        	      changeOrigin: true 					// 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
      	    },
    	},
    	host: '0.0.0.0', 
    	port: 8080, 
    	autoOpenBrowser: false,
    	errorOverlay: true,
    	notifyOnErrors: true,
    	poll: false, 
	}
}
  1. 调用接口
<script>
import axios from "axios";
export default {
   
	data(){
   
		return {
   
			form:{
   
				img:""
			}
		}
	},
	methods:{
   
		fetchCode(){
   
			axios.get('/xxx-api/code').then(res=>{
   
				console.log(res,"直接调用第三方接口成功")
				// 处理base64编码并展示
				this.form.image = `data:image/jpeg;base64,${
    res.data.img}`;
			}).catch(error=>{
   
        		console.log(error,"ERROR");
      		})
		}
	}
}
</script>
  1. 调用成功
    在这里插入图片描述

四. 遇到的问题

  1. 调用第三方接口,返回 status 为200,但返回 data 为 html 内容
    在这里插入图片描述

  2. 原因
    (1)未配置 步骤三 3.2 中 的(1);
    (2)重名
    在这里插入图片描述

相关推荐

  1. 使用vue 实现访问http请求

    2024-02-23 09:40:01       40 阅读
  2. 调用接口-RestTemplate

    2024-02-23 09:40:01       18 阅读
  3. 调用接口-OkHttpClient

    2024-02-23 09:40:01       23 阅读
  4. vue使用axios解决get和post请求

    2024-02-23 09:40:01       35 阅读
  5. 调用接口:springBoot整合forest

    2024-02-23 09:40:01       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 09:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 09:40:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 09:40:01       82 阅读
  4. Python语言-面向对象

    2024-02-23 09:40:01       91 阅读

热门阅读

  1. Spring Boot使用MongoDB详解

    2024-02-23 09:40:01       51 阅读
  2. Apache Camel定时任务

    2024-02-23 09:40:01       49 阅读
  3. 数据仓库和数据湖的区别

    2024-02-23 09:40:01       47 阅读
  4. Stable Diffusion算法、结构全流程概述

    2024-02-23 09:40:01       48 阅读
  5. spark ui的job数,stage数以及task数

    2024-02-23 09:40:01       45 阅读
  6. 云原生 - K8s命令合集

    2024-02-23 09:40:01       52 阅读
  7. RecycleView结合ItemTouchHelper实现拖动排序

    2024-02-23 09:40:01       41 阅读
  8. 多微服务合并为一个服务

    2024-02-23 09:40:01       58 阅读
  9. 基于AT89C51单片机与DS18B20的温度测量系统

    2024-02-23 09:40:01       55 阅读
  10. 前端常见面试题之react基础

    2024-02-23 09:40:01       47 阅读