前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vite构建的本地开发环境请求第三方接口时如何解决跨域问题

vite构建的本地开发环境请求第三方接口时如何解决跨域问题

作者头像
itclanCoder
发布2023-09-21 19:15:42
8580
发布2023-09-21 19:15:42
举报
文章被收录于专栏:itclanCoderitclanCoder

前言

在vite构建的本地开发环境中,请求第三方接口时如何解决跨域问题呢?

本地开发环境,只要请求接口,如果没有做代理配置,都会存在同源策略,跨域的问题,要么在本地做代理,要么在服务器做代理,要么在请求头中设置允许跨域,下面我们来介绍下如何解决vite构建的本地开发环境请求第三方接口时如何解决跨域问题

解决方案

  1. 配置代理

vite.config.js中配置代理,添加server对象,并配置proxy代理,当在组件中请求/api开头的接口时,会代理到http://v.juhe.cn

代码语言:javascript
复制
import { defineConfig } from 'vite'

// https://vitejs.dev/config/
export default defineConfig({
  // 解决本地接口请求跨域的问题,配置server
  server: {
    https: false,
    // 是否自动在浏览器打开
    open: true,
    cors: true,
    proxy: {
      '/path': {
        target: 'https://v0.yiketianqi.com',    // 接口域名,接口服务器地止
        changeOrigin: true,
        secure: false,
        rewrite: (path) => path.replace(/^\/path/, '')
    },
   }
 }
})

在单文件组件中,请求接口时,接口的地止以/path/开头,就可以了的,如果写完整的地止,会报错 出现跨域情况

代码语言:javascript
复制
import axios from "axios";

async function getWeatherData() {
  try {
       const params = {
              unescape:1,
              version:'v61',
              appid: 69617844,
              appsecret:'Cus4jy7S',
              cityid: this.value
        }
        const response = await this.$axios.get('/path/api',{params});
        console.log(response);  
   catch (error) {
    console.log(error);
   }
}

如果不用axios,用fetch也可以,但是需要转化

代码语言:javascript
复制
fetch("https://v0.yiketianqi.com/api?unescape=1&version=v61&appid=69617844&appsecret=Cus4jy7S").then(res => {
    res.json().then(json => console.log(json))
})

在pc端和移动端兼容性,返回的response bodyreadable stream,请求默认不带cookie,需要添加配置项(fetch(url,{credentials:'include'}))如果涉及到token权限验证,那使用fetch就不是很合适

不支持abort,不支持超时控制,使用setTimeoutpromise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,会造成流量的良妃

fetch没有办法监测原生请求的进度,而XR却可以

优点:

  • 语法简化,语义化
  • 基于标准的promise实现,支持async/await
  • 更加底层,提供丰富的API
  • 脱离了XHR,是ES规范里新的实现方式

注意

需要注意的是,在生产环境时,需要关闭代理,不然会报错,因为生产环境时,接口服务器地址是不同的,所以需要关闭代理

在生产环境中应该在web服务器中进行代理,也就是需要后端同学提供支持

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-17 08:00,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 itclanCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com