Vue-cli集成axios请求出现CORS跨域问题及解决

 更新时间:2023年10月10日 11:34:48   作者:凌晨小街  
这篇文章主要介绍了Vue-cli集成axios请求出现CORS跨域问题及解决方案,具有很好的参考价值,希望对大家有所帮助,

Vue-cli集成axios请求出现CORS跨域问题

今天仍然在学习Vue,出现了一个我意料之中的问题

请求跨域问题

我想通过主机来访问豆瓣里面的json数据

首先按照python爬虫的思想,我掏了一个豆瓣json数据的url地址信息及参数

① 基本url: https://movie.douban.com/j/search_subjects

②请求参数如下:

  • type:‘movie’,
  • tag:‘热门’,
  • page_limit:50,
  • page_start:0

二话不说开始用axios进行数据请求,

那么如果没有axiso,请先下载

npm i axios

App.Vue的代码如下

<template>
    <button @click="getData">axios获取请求</button>
</template>
<script>
import axios from 'axios';
// 联系网址:https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20
export default {
    methods: {
        getData(){
            axios.get('/ysj/j/search_subjects'
              ,{
                params:{
                    type:'movie',
                    tag:'热门',
                    page_limit:50,
                    page_start:0
                }
              }
              )
            .then(res => {
                console.log('请求成功',res)
            })
            .catch(err => {
                console.error('请求失败',err); 
            })
        }
    },
}
</script>
<style>
</style>

同时在vue.config,js里面配置代理服务器

module.exports = {
    pages:{
        index:{
            //程序的入口
            entry:'src/main.js',
        },
    },
    lintOnSave:false,  //关闭语法检查
    // 开启一个Vue的代服务器,后面端口视自己请求的端口修改
    // devServer: {
    //     proxy: 'https://movie.douban.com'
    // }
    /**
     * 1、/ysj 是加到实际请求的端口后面
     * 
     * 2、而在实际请求中,浏览器请求发给代理服务器
     * ,代理服务器也会携带/ysj内容,这样子无法获取数据
     * ,所以用正则表达式将/ysj拿掉,也就是pathRewrite
     * 
     * 3、ws是webSocket的简写,默认是true
     * 
     * 4、changeOrigin为true代表当代理服务器给目标服务器发送请求时
     * ,给出的与目标服务器一致的端口号, 防止目标服务器拦截我的请求
     */
    devServer: {
        proxy: {
          '/ysj': {
            target: 'https://movie.douban.com',
            pathRewrite:{'^/ysj':''},
            // ws: true,
            changeOrigin: true
          },
        }
      }
}

最后由于写了pathRewrite进行了代理服务器到目标服务器路径的整理,请求成功了

总结

解决了跨域问题!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue封装可复用组件confirm,并绑定在vue原型上的示例

    vue封装可复用组件confirm,并绑定在vue原型上的示例

    今天小编就为大家分享一篇vue封装可复用组件confirm,并绑定在vue原型上的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Vite打包性能优化之开启Gzip压缩实践过程

    Vite打包性能优化之开启Gzip压缩实践过程

    vue前端项目发布的时候,打包可实现gzip格式的压缩,下面这篇文章主要给大家介绍了关于Vite打包性能优化之开启Gzip压缩的相关资料,需要的朋友可以参考下
    2022-12-12
  • 使用vue-cli脚手架工具搭建vue-webpack项目

    使用vue-cli脚手架工具搭建vue-webpack项目

    这篇文章主要介绍了使用vue-cli脚手架工具搭建vue-webpack项目,通过几个默认的步骤帮助你快速的构建Vue.js项目。非常具有实用价值,需要的朋友可以参考下
    2019-01-01
  • Vue.js如何实现路由懒加载浅析

    Vue.js如何实现路由懒加载浅析

    Vue是可以自定义指令的,最近学习过程中遇见了一个需要懒加载的功能,发现网上这方面的资料较少,所以下面这篇文章主要给大家介绍了关于Vue.js如何实现路由懒加载的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • Vue如何通过Vue.prototype定义原型属性实现全局变量

    Vue如何通过Vue.prototype定义原型属性实现全局变量

    在Vue.js开发中,通过原型属性为Vue实例添加全局变量是一种常见做法,使用$前缀命名,可以避免与组件内部的数据、方法或计算属性产生命名冲突,这种方式简单有效,确保了变量在所有Vue实例中的可用性,同时保持全局作用域的整洁
    2024-10-10
  • vue 详情跳转至列表页实现列表页缓存

    vue 详情跳转至列表页实现列表页缓存

    这篇文章主要介绍了vue 详情跳转至列表页实现列表页缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Vue非单文件组件使用详解

    Vue非单文件组件使用详解

    Vue单文件组件通常使用.vue文件扩展名,下面这篇文章主要给大家介绍了关于Vue非单文件组件使用的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • vue之computed的缓存特性

    vue之computed的缓存特性

    这篇文章主要介绍了vue之computed的缓存特性,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 使用el-upload实现文件上传方式(包括预览,下载)

    使用el-upload实现文件上传方式(包括预览,下载)

    该文章介绍了两种文件上传、预览和下载的方法,分别是通过卡片形式和按钮形式,卡片形式中的下载和预览功能尚未完善,父组件使用了el-upload组件,可以实现新增、编辑和查看文件的功能
    2025-11-11
  • element-ui中的select下拉列表设置默认值方法

    element-ui中的select下拉列表设置默认值方法

    今天小编就为大家分享一篇element-ui中的select下拉列表设置默认值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论